【问题标题】:Regex position-insensitive正则表达式位置不敏感
【发布时间】:2011-12-19 13:26:43
【问题描述】:

示例:给定字符串中必须至少有两个数字与其位置无关

这只有在他们在一起时才有效:/[0-9]{2}/

如果它们像a1b2 那样分开,则不起作用。

编辑:感谢您的回复,但我意识到这个例子太琐碎了。试试这个:在给定的字符串中必须至少有两个数字和两个字母 x 和两个字符 & 和两个字母 J。

在每个可能的排列之间添加 .* 不会变得很长吗?有没有办法不关心订单?

【问题讨论】:

  • [0-9]{2} 将匹配两个相邻的数字 - 所以只需测试那个匹配。我错过了什么吗?
  • 也许这会给你灵感:stackoverflow.com/questions/5950756/…
  • @FelixKling 谢谢,这是我迄今为止在正确方向上的最佳点。所以,基本上看起来我会有一个超级丑陋的正则表达式。或者,将其拆分为多个正则表达式并全部测试

标签: regex


【解决方案1】:

以下内容对您有用:

/\d.*\d/

【讨论】:

    【解决方案2】:

    “感谢您的回复,但这应该是微不足道的 例子。如果它更像"

    是的,因为您的正则表达式有更多规则,所以它会变得更长。这是不可避免的。通常,当您想检查是否至少应该使用 positive lookahead assertions 时:

    /^(?=.*\d.*\d)(?=.*x.*x).*$/
    

    这个帐户至少有两位数和至少两个 x。剩下的交给你了。

    【讨论】:

    • 谢谢!我选择的原始示例很糟糕,但这是我正在寻找的解决方案
    【解决方案3】:

    您可以只说一个数字,然后是任何内容(或什么都不做),然后是一个数字:/[0-9].*[0-9]/

    【讨论】:

      猜你喜欢
      • 2011-10-03
      • 2011-05-14
      • 2015-11-11
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2017-04-11
      • 1970-01-01
      相关资源
      最近更新 更多