2015-02-08 59 views
0

匹配onlu特定的詞我有這個字符串:正則表達式來讀取HTML和文本中

<body> 
    <span class="open crack-opener o_open i_opens ng-open" style='open'>Open opens openes "Open opens openes" clopened</span> 
</body> 

,我需要選擇只有一行字OPEN或僅文本中的開路或OPENES。我嘗試了以下RegExp,但它只選擇標籤。我需要否定這一點並選擇單詞。

/(<\/?\w+((\s+\w+(\s*=\s*(?:\".*?"|'.*?'|[^'\">\s]+))?)+\s*|\s*)?>)/ig 

如何否定此匹配並插入單詞open?

在此先感謝

+0

爲此使用jQuery將會相當容易。正則表達式可以永遠不會是一個合適的HTML解析器。使用jQuery,它就像'$(' Open openns Open openes clopened',「。打開「)。text()' – spender 2015-02-08 17:05:09

+0

但實際上它是爲了讀取整個身體標記,並且突出顯示動態詞彙,不僅僅是一個特定的詞彙,也不在.open標籤中。所以,如果在所有標籤內部運行所有文本(),它將會過於沉重。 – 2015-02-08 17:09:24

回答

2

要首先:不要使用正則表達式來解析HTML,它是不是一個好主意,因爲它是不可能建立的正則表達式解析HTML :)

但是,回到你的問題:

var str="<body><span class=\"open crack-opener o_open i_opens ng-open\" style='open'>Open opens openes \"Open opens openes\" clopened</span></body>"; 
var words=str.match(/(\bopen\b|\bopens\b|\bopenes\b)(?=[^>]*<)/ig); 

這將搜索詞,然後任何東西,除了爲>,然後接着<。該解決方案不是最好的,但你不能指望正則表達式去做一些它沒有設計的東西。