正则表达式 - 避免表达式

时间:2017-11-11 10:07:30

标签: javascript regex string

我正在尝试创建一个应该符合以下情况的正则表达式。 如果单词'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

正则表达式需要支持不区分大小写的单词

任何帮助表示赞赏。我正在使用javascript。

1 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

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

Click for Demo

<强>解释

  • ^ - 断言字符串的开头
  • (?!.*[()!=<>", ]) - 用于验证测试字符串不包含任何这些字符的否定预测 - ()!=,{ {1}},<>,
  • - 此时我们处于测试字符串的开头。此位置不应紧跟((?!(?:first|second|third)$)firstsecond),然后紧跟字符串末尾(third
  • $ - 匹配任何字符的1次出现,但不匹配换行符
  • .+ - 断言字符串的结尾