[英]javascript regex match word not followed by pattern with text inbetween
文本:
id="word1 word2 word3/343/els/425/word4 word5 word6"
wordA wordB Bword2B word1 word2 word3
blah blah blah
我試圖匹配整個單詞:但文本中沒有word1,word2,word3 ,但我不希望它們在文本的id="word1 word2 word3/343/els/425/word4 word5 word6"
行中id="word1 word2 word3/343/els/425/word4 word5 word6"
,這些詞不是拉丁語。
當前方法:
var sWord = "word2";
text = text.replace( new RegExp(sWord+"(?!\/[0-9])", "gi"), "<span style='background-color: yellow'>"+sWord+"</span>");
這種方法僅適用於word3,不適用於word1或word2,因此如何在正則表達式中引入在NUMBER之前還有另一個單詞的可能性?
"(?!.\/[0-9])"
我加了點“。” 到正則表達式。 但它似乎不起作用。
另外,如何增加整個單詞匹配的可能性? \\ b和\\ S似乎不起作用,因為單詞不在拉丁語中。
先感謝您!
編輯: jsfiddle http://jsfiddle.net/GLt4F/5/
如您所見,word1和word2的按鈕中斷,但word3卻沒有,因為匹配正確
編輯2:
改寫問題:如果不接BBB,則僅匹配AAA,並且兩者之間可以是任何東西。 例如:
AAA frefe BBB不應該匹配
AAA BBB不應該匹配
AAA frefe cc應該匹配
/AAA([\s\S](?!=BBB))*$/
應該這樣做。
另外,如何增加整個單詞匹配的可能性? \\ b和\\ S似乎不起作用,因為單詞不在拉丁語中。
JavaScript沒有unicode兼容模式,因此您必須為char單詞編寫自己的字符集並使用否定匹配,因此
(?:^|[^A-Za-z0-9_$])
在AAA之前,並且在JS中沒有后退,因此先前的非單詞char將成為捕獲的組0的一部分。
(?!(.*)\/[0-9])
這似乎可以解決問題(因為介於兩者之間時不匹配。不知道是否存在漏洞,或者這是否是一個可靠的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.