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

Dre*_*ams 0 javascript regex

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

/[0-9\-\(\)]/.test(str)
Run Code Online (Sandbox Code Playgroud)

当我测试

 /[0-9\-\(\)]/.test('(12321)213213d')
Run Code Online (Sandbox Code Playgroud)

它会返回true

mpe*_*pen 7

你实际测试的是你的测试字符串中是否有这些字符.要检查它是否包含只有这些字符.要做到这一点,你需要说^从头到尾$它只包含那些字符.

例如

/^[0-9()-]+$/.test('(12321)213213d')
Run Code Online (Sandbox Code Playgroud)


T.J*_*der 5

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

  • ^ - "输入的开头"锚点
  • $ - "输入结束"锚点
  • + - 需要前面提到的一件或多件事

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