2017-11-11 158 views
2

我想創建一個應匹配以下情況的正則表達式。 如果單詞'first, second, third'的匹配完全匹配應該失敗 - 但是如果它周圍有任何字符,則應匹配字符串。正則表達式 - 避免在表達式中的字符串

另外我需要避免字符串中的某些字符集。 [()= <>」! - 如果這些字符字符串的一部分匹配,那麼結果應該失敗

我看了看幾個例子提前&負的外觀,但並沒有得到正確的正則表達式又

^(?!first$|second$|third$|fou rth$)[^()!=<>", ]+ 

所需的輸出:

first - fail 
second - fail 
1first - pass 
first1 - pass 
1first1 - pass 
fou rth - fail - it has space in between word and is from ignore list 
newTest - pass 
new(test - fail - since (is not allowed character 
space word - fail - since space is non allowed character 

正則表達式需要支持

讚賞任何幫助我使用javasc不區分大小寫的話。 RIPT。

回答

2

試試這個正則表達式:

^(?!.*[()!=<>", ])(?!(?:first|second|third)$).+$

Click for Demo

說明:

  • ^ - 斷言字符串的開始
  • (?!.*[()!=<>", ]) - 負ative先行驗證該測試字符串不包含任何字符 - ()!=<>,
  • (?!(?:first|second|third)$) - 在這一刻,我們是在測試字符串的開頭。該位置不應被隨後立即(firstsecondthird),然後通過所述字符串的末尾($
  • .+ - 匹配1+任何字符的發生,但不是換行符
  • $ - 斷言字符串末尾
+0

對已倒票的人,你介意解釋一下你的理由嗎? – Gurman