【问题标题】:How to write a regex only allow numbers and "(", ")", "-"如何编写正则表达式只允许数字和“(”,“)”,“-”
【发布时间】:2016-10-13 17:08:30
【问题描述】:

下面是我的正则表达式,但它似乎不起作用

/[0-9\-\(\)]/.test(str)

当我测试时

 /[0-9\-\(\)]/.test('(12321)213213d')

它会返回真

【问题讨论】:

标签: javascript regex


【解决方案1】:

您实际测试的是这些字符中的 任何 是否在您的测试字符串中。您想检查它是否包含 only 那些字符。为此,您需要说从开始 ^ 到结束 $ 它只包含那些字符。

例如

/^[0-9()-]+$/.test('(12321)213213d')

【讨论】:

    【解决方案2】:

    您当前的正则表达式只检查字符串中的任何一个字符是否与字符类匹配。添加锚点和量词:/^[0-9\-\(\)]+$/

    • ^ - “输入开始”锚
    • $ - “输入结束”锚
    • + - 需要上述一项或多项

    请注意,"()" 将匹配该正则表达式。 :-)

    【讨论】:

      【解决方案3】:

      您需要使用*+ 重复此操作。您还需要使用^$ 锚定它以包含整个字符串。

      console.log(/^[0-9\-\(\)]+$/.test('(12321)213213d'));
      console.log(/^[0-9\-\(\)]+$/.test('(12321)213213'));

      【讨论】:

        【解决方案4】:

        我相信添加输入开始/结束字符可以解决这个问题。喜欢

        ^[0-9\-(\)]$/.exec('(12321)213213d')
        

        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

        【讨论】:

          【解决方案5】:
          /^[\d\(\)\-]+$/.test('(12321)213213d')
          

          ^ start, $ end, \d 代表数字和 ()-,

          我认为您正在寻找电话号码匹配器,如果您的回答是肯定的,那么这不是正确的正则表达式。

          电话匹配请访问link

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-05-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多