我正在尝试使用正则表达式来捕获HTML内容中的提及。我有这样的内容:
<div data-user-id="@john">@john</div>
我想只抓住div中的提及,而不是""
内部。我已经完成了这个正则表达式(http://regexr.com/3ckv8):
/[^"]@[a-zA-Z0-9_]*[^"]/g
这几乎没问题。问题是它还捕获了div标签的><
。有什么建议吗?
答案 0 :(得分:1)
$str = '<div data-user-id="@john">@john</div>';
preg_match_all('#<div.*?>([^>]*)</div>#i', $str, $match_arr);
print_r($match_arr[1], 1);
和JS方解决方案
<div id="data" data-user-id="@john">@john</div>
$("#data").text();
答案 1 :(得分:0)
由于JS正则表达式的功能有限,我认为最好的选择是两步:
<div>
的内容(如果这是非DOM的情况,则获取正则表达式)/(@[a-zA-Z0-9_]*)/g
(参考文献将在\1 \2 ...
中)