用于HTML内容中提及的Regexp

用于HTML内容中提及的Regexp,html,regex,Html,Regex,我正试图做一个regexp来捕捉HTML内容中的提及。我有这样一个内容: <div data-user-id="@john">@john</div> 这几乎行得通。问题是,它还捕获了,而JS的regex功能有限,我认为最好的选择是两个步骤: 通过DOM调用获取的内容(如果是在非DOM情况下,则使用正则表达式) 然后在div内容上使用此正则表达式/(@[a-zA-Z0-9\]*)/g(参考将位于\1\2…) $str='@john'; preg_match_all('#(

我正试图做一个regexp来捕捉HTML内容中的提及。我有这样一个内容:

<div data-user-id="@john">@john</div>

这几乎行得通。问题是,它还捕获了
,而JS的regex功能有限,我认为最好的选择是两个步骤:

  • 通过DOM调用获取
    的内容(如果是在非DOM情况下,则使用正则表达式)
  • 然后在div内容上使用此正则表达式
    /(@[a-zA-Z0-9\]*)/g
    (参考将位于
    \1\2…
  • $str='@john';
    preg_match_all('#([^>]*)#i',$str,$match_arr);
    打印($match_arr[1],1);
    
    对于JS端解决方案

    <div id="data" data-user-id="@john">@john</div>
    $("#data").text();
    
    约翰 $(“#数据”).text();
    最好使用HTML解析器。您使用的语言是什么?只是发布预期的输出?使用DOM的
    document.getElementById(“id”).innerHTML
    方法如何?如果您可以从DOM获得该方法,是否可以?尝试使用neg。前瞻和单词边界:
    @\w+\b(?!)
    是的,谢谢,它在剪切粘贴过程中迷失了方向。对我来说,它更像是一个注释。我已经说过DOM解析器最适合这个任务。答案中提供的正则表达式没有帮助。@Wiktor Stribiżew——怎么会这样?看看OP想要什么:我只想在divs中捕捉提到的内容,而不是在““@WiktorStribiżew是的,我的第一步是提取div的内容,然后使用正则表达式。这不是个好主意,因为这完全是服务器端的(顺便说一句,我在客户端使用JS)
    $str = '<div data-user-id="@john">@john</div>';
    preg_match_all('#<div.*?>([^>]*)</div>#i', $str, $match_arr); 
    print_r($match_arr[1], 1);
    
    <div id="data" data-user-id="@john">@john</div>
    $("#data").text();