2016-01-22 119 views
-2

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

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

我想只捕获提的div里面,而不是""内。我已经完成了这个正则表达式(http://regexr.com/3ckv8):

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

这很正常。问题是它也抓住了div标签的><。任何建议?

+2

最好的是使用HTML解析器。你正在使用什么语言? –

+0

只是预期的产出? – Vegeta

+1

如何使用document.getElementById(“id”)。innerHTML方法的DOM? – 2016-01-22 13:14:45

回答

0

随着JS的正则表达式的有限权力,我想最好的办法是两个步骤:

  1. 获取<div>与DOM调用的内容(或正则表达式,如果这是在非DOM情况)
  2. 然后用这个表达式/(@[a-zA-Z0-9_]*)/g的DIV内容(裁判时便会在\1 \2 ...
+0

是的,谢谢你,它已经在某种程度上陷入了粘糊糊的状态 –

+0

如果它没有说'*或者正则表达式*',我会赞成这个。 – Biffen

+0

对我而言,它更多我已经评论说,DOM解析器是最适合这个任务的。正则表达式提供的答案不会帮助。 –

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(); 
+0

不是一个好主意,因为这完全是服务器端(顺便说一句,我在客户端使用JS) – Noah

+0

我也添加了js端代码。 – areeb