【问题标题】:Building a regular expression that tests true for '!=' but false for '!'构建一个正则表达式,测试 '!=' 为真,'!' 为假
【发布时间】:2017-07-25 23:19:56
【问题描述】:

我希望允许不等式运算符,但不允许特殊字符“!”靠自己。

也许我可以使用两个正则表达式,/!=/ 和 /!/。我想测试 /!/ 如果它是单独的 - 如果它没有伴随等号,则输出错误。问题是 /!/ 如果输入为 '!=' 将测试为真。想法?

输入:“!= !”

预期输出:“找到令牌'!='

无效字符“!”找到

【问题讨论】:

  • 请提及您的输入字符串和预期的输出字符串。
  • 为什么要将正则表达式用于固定值?您可以只检查是否有!=。如果你需要检查一个字符串是否有!后面没有=,是的,使用/!(?!=)/正则表达式。
  • @Azurasky 你期待这个regex101.com/r/74iVXd/1吗?
  • 我正在使用正则表达式,以便我可以测试这些值是否存在于可能很长的字符串中。
  • 使用/!(?!=)/正则表达式。

标签: regex


【解决方案1】:

据我了解,您想搜索一个角色!后面没有字符 =。这听起来类似于this question。我试过here

// regex (?=!(?!\=))

!= ! // matches
foo ! bar // matches
foo != bar // doesn't match

这里的关键字是lookaround。在此处查看详细信息(以及在我链接的问题中)。

【讨论】:

    【解决方案2】:

    您需要使用negative lookahead 来确保在当前位置右侧找不到某些模式:

    /!(?!=)/
    

    请参阅regex demo。这里,! 仅在其后没有 = 时才匹配。

    查看更多关于how negative lookahead works here的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-14
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多