2012-12-19 22 views
4

我從一個DOM元素,其中包含類似於下面的東西的字符串:查找使用Javascript(正則表達式)文本沒有HTML標記中

<span class='greenhornet'>Can you catch the green?</span> 

我需要知道這個詞的位置綠色

在這種情況下,如果我的設置過程的模式/green/,JS exec()將返回的綠色(位置13)的第一次出現。

有沒有辦法告訴JS正則表達式忽略!綠色,如果它是<>之間還是有一個更簡單的方法來做到這一點?

哦,我也不能剝掉HTML!

謝謝。

+5

[請不要用解析HTML正則表達式(http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html) –

+0

例如,你可以使用'document.getElementsByClassName'嗎? – antyrat

+2

您的最終目標是什麼? – Shmiddty

回答

0

您可以獲取span元素的innerHTML。不需要Regex。

2

正如評論者(和用戶1883592)所建議的那樣,剝離HTML或從HTML解析文本在這裏是正確的答案。在HTML中使用正則表達式是失敗者的遊戲;你已經受到警告。但是,如果你真的想玩這個遊戲,我會先確定你的任期和最後一個右括號之間沒有開頭括號;換句話說:

var greenRegex = />[^<]+(green)/; 
var position = "<span class='greenhornet'>Can you catch the green?</span>".search(greenRegex); 
// position = 25, not 13 
相關問題