我正在尝试创建一个应该匹配以下情况的正则表达式。
如果单词完全匹配'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。
试试这个正则表达式:
^(?!.*[()!=<>", ])(?!(?:first|second|third)$).+$
点击查看演示 https://regex101.com/r/ngLGH6/3
解释:
-
^
- 断言字符串的开头
-
(?!.*[()!=<>", ])
- 负向前视以验证测试字符串不包含任何这些字符 -(
, )
, !
, =
, <
, >
, ,
,
-
(?!(?:first|second|third)$)
- 此时我们处于测试字符串的开头。此位置不应紧随 (first
or second
or third
) 然后到字符串末尾($
)
-
.+
- 匹配任何字符出现 1 次以上,但不匹配换行符
-
$
- 断言字符串的结尾
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)