2016-01-22 117 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