我正在尝试创建一个应该符合以下情况的正则表达式。
如果单词'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。
答案 0 :(得分:2)
试试这个正则表达式:
^(?!.*[()!=<>", ])(?!(?:first|second|third)$).+$
<强>解释强>
^
- 断言字符串的开头(?!.*[()!=<>", ])
- 用于验证测试字符串不包含任何这些字符的否定预测 - (
,)
,!
,=
,{ {1}},<
,>
,,
- 此时我们处于测试字符串的开头。此位置不应紧跟((?!(?:first|second|third)$)
或first
或second
),然后紧跟字符串末尾(third
)$
- 匹配任何字符的1次出现,但不匹配换行符.+
- 断言字符串的结尾