2017-11-11 162 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