在发布此问题之前,我已经阅读了Regex Wiki以及以下SO问题:
RegEx to exclude a specific string constant
这是我的工作,这部分是我想要的:
(?!INVALID).*$
请参阅http://refiddle.com/refiddles/577c888075622d5f3e125700
第一篇SO帖子在编辑发布的正则表达式后实际上解决了我的问题
我工作的问题是当单词以INVALID
开头时正则表达式失败
基本上是这样的:
TestINVALID
可以使用 TestINVALID123
可以使用 INVALID
将无法匹配我想要的内容,因此将起作用 INVALIDTest
不起作用,不匹配 我希望正则表达式不匹配,并且只有当字符串完全匹配“INVALID”
时答案 0 :(得分:1)
您需要将$
包含在您的负面展望中:
^(?!INVALID$).*
^----------added "$" here
这可以防止整个输入(而不仅仅是前导输入)成为"ÌNVALID"
。
答案 1 :(得分:0)
您可能想尝试驯服贪婪令牌:
^(?:(?!INVALID).)+$
这会使以下所有内容无效,但最后一个:
TestINVALID
TestINVALID123
INVALID
INVALIDTest
this one will be valid
请参阅a demo on regex101.com并注意multiline
标志
INVALID
的行吗?这可以通过简单的字符串函数或来实现(如果你坚持使用正则表达式):
^INVALID$ # look for INVALID from start to end of the line