【问题标题】:How to match only some characters with a regex?如何仅将某些字符与正则表达式匹配?
【发布时间】:2012-10-24 14:53:01
【问题描述】:

我想检查一个字符串是否只匹配一些带有正则表达式的字符。

例如,我只想匹配 abc

因此,“aaacb”会通过,但“aaauccb”不会(因为u)。

我试过这种方式:

/[a|b|c]+/

但它不起作用,因为失败的示例通过了。

【问题讨论】:

    标签: ruby regex


    【解决方案1】:

    您需要通过将正则表达式锚定到字符串的开头和结尾来确保您的字符串包含这些字符:

    /^[abc]+$/
    

    您还混淆了两个概念。交替((a|b|c))和字符类([abc])。在这种情况下,它们是等效的。您的版本还允许 | 作为字符。

    【讨论】:

      【解决方案2】:
       /[^abc]/
      

      是一个从rubular 抄袭的例子。它匹配任何单个字符,除了:a、b 或 c

      【讨论】:

      • 是的,这让事情变得更简单了。但请注意,需要对结果进行反转以进行所需的检查,并且现在必须单独完成对非空字符串的检查。
      • 这与空字符串边缘情况中所述的行为不同。
      【解决方案3】:

      试试 [abc]+

      它将匹配 a、b 或 c。

      【讨论】:

      • ...但仍允许包含其他字符的字符串
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 2010-12-20
      • 1970-01-01
      相关资源
      最近更新 更多