用于HTML内容中提及的Regexp
我正试图做一个regexp来捕捉HTML内容中的提及。我有这样一个内容:用于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('#(
<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();