【问题标题】:How to negate a regex only if the strings match exactly仅当字符串完全匹配时如何否定正则表达式
【发布时间】:2023-03-23 02:51:01
【问题描述】:

在发布这个问题之前,我已经浏览了 Regex Wiki 以及以下 SO 问题:

How To Negate Regex

RegEx to exclude a specific string constant

这是我的工作,这部分是我想要的:

(?!INVALID).*$

http://refiddle.com/refiddles/577c888075622d5f3e125700

在编辑发布的正则表达式后,第一个 SO 帖子实际上解决了我的问题

我工作的问题是当单词以INVALID 开头时,正则表达式失败

所以基本上:

  • TestINVALID 会工作
  • TestINVALID123 会工作
  • INVALID 与我想要的不匹配,所以 可以工作
  • 但是INVALIDTest 不起作用,它不匹配

我希望正则表达式仅在字符串完全匹配“INVALID”时不匹配

【问题讨论】:

  • 请将您问题的详细信息直接放入问题中。
  • 这不是你想要的吗? stackoverflow.com/questions/2637675/…
  • 不清楚你想要什么。你能清楚地说明你想匹配什么,或者只是给出匹配和不匹配输入的例子吗?
  • 是什么口味的?

标签: regex regex-negation


【解决方案1】:

您需要在负面展望中包含$

^(?!INVALID$).*
           ^----------added "$" here

这可以防止整个输入(不仅仅是前导输入)成为"ÌNVALID"

【讨论】:

【解决方案2】:

您可能想尝试一个脾气暴躁的代币

^(?:(?!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

也请参阅a demo for this one on regex101.com

【讨论】:

  • 非常感谢您试用正则表达式,如果问题有点不清楚,我深表歉意。实际上,要求本身有点令人困惑,所以不确定我是否表述得很好。再次感谢它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
相关资源
最近更新 更多