如何编写正则表达式只允许数字和"(",")"," - "

时间:2016-10-13 17:08:30

标签: javascript regex

以下是我的正则表达式,但它似乎无法正常工作

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

当我测试时

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

它将返回true

5 个答案:

答案 0 :(得分:7)

您实际测试的是这些字符中的任何是否在您的测试字符串中。您想检查它是否只包含 这些字符。要做到这一点,你需要说从开始^到完成$它只包含那些字符。

e.g。

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

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:4)

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

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

答案 3 :(得分:0)

我相信添加输入开头/结尾字符会解决这个问题。像

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

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

答案 4 :(得分:0)

apt-get install libpq-dev postgresql-server-dev-all

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

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

对于电话匹配器,请访问此link