Regexp用于HTML内容

时间:2016-01-22 13:05:05

标签: html regex

我正在尝试使用正则表达式来捕获HTML内容中的提及。我有这样的内容:

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

我想只抓住div中的提及,而不是""内部。我已经完成了这个正则表达式(http://regexr.com/3ckv8):

/[^"]@[a-zA-Z0-9_]*[^"]/g

这几乎没问题。问题是它还捕获了div标签的><。有什么建议吗?

2 个答案:

答案 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正则表达式的功能有限,我认为最好的选择是两步:

  1. 使用DOM调用获取<div>的内容(如果这是非DOM的情况,则获取正则表达式)
  2. 然后在div内容上使用此正则表达式/(@[a-zA-Z0-9_]*)/g(参考文献将在\1 \2 ...中)