我怎麼能寫測試一個正則表達式,如果字符串包含幾個子結構爲:JavaScript RegEx排除某些詞/短語?
"cake.xxx"
其中xxx爲什麼,但不「奶酪」或「奶」或「黃油」。
例如:
"I have a cake.honey and cake.egg"
應該返回true
,但"I have a cake.**milk** and cake.egg"
應該返回false
。
我怎麼能寫測試一個正則表達式,如果字符串包含幾個子結構爲:JavaScript RegEx排除某些詞/短語?
"cake.xxx"
其中xxx爲什麼,但不「奶酪」或「奶」或「黃油」。
例如:
"I have a cake.honey and cake.egg"
應該返回true
,但"I have a cake.**milk** and cake.egg"
應該返回false
。這是你想要的嗎?
^(?!.*cake\.(?:milk|butter)).*cake\.\w+.*
這其中是否包含 「cake.XXX」,而不是當它的 「cake.milk」 或 「cake.butter」
.*cake\.\w+.*
這完全匹配一行如果有「蛋糕」,部分將會匹配。隨後至少有一個wrod字符。
(?!.*cake\.(?:milk|butter))
這是一種消極的先行,這將阻止如果字符串包含單詞之一,你不允許
^
錨圖案到字符串的開頭
正則表達式匹配的字符(如*
,+
,?
,並且{0}
)只適用於最後一個字符
你應該把這個詞或短語在non-matching group,像這樣:
(?:someWord){0}
意味着someWord
重複(存在)0次,沒有把它在你的比賽
(?!someWord)
做同樣的事情
regex101是測試正則表達式良好的操場,看到擊穿
我想知道爲什麼它是(?:牛奶)而不是(牛奶?)? –
這只是一個非捕獲組,因爲'?:'。唯一的區別是匹配的字符串不存儲到變量中。 – stema
這意味着我可以使用(牛奶),對吧?還有更多,是否需要在字符串開始標記「^」之後加上「負向預覽」規則? –