试着写一个只匹配数字,空格,括号,+和 - 的正则表达式

时间:2010-07-13 17:51:50

标签: javascript regex validation

我正在尝试编写一个常规来检查数字,空格,括号,+和 - 这就是我到目前为止所做的:

/\d|\s|\-|\)|\(|\+/g

但我在正则表达式中得到此错误:无法匹配) 任何建议都会有所帮助 感谢

5 个答案:

答案 0 :(得分:8)

使用字符类:

/[\d\s()+-]/g

如果它是一个数字\d,空格\s,文字(,文字),文字+或文字{{1},则匹配单个字符}}。将-放在最后一个字符类中是一种简单的方法,使其成为文字-;否则它可能成为范围定义元字符(例如-)。

一般来说,不是一次匹配一个字符作为替代(例如[A-Z]),而是使用字符类(例如a|e|i|o|u)更具可读性。它更简洁,更易读,并且可以自然地将字符组合在一起,因此您可以进行例如[aeiou]匹配一系列元音。

参考


买者

初学者有时会将字符类别与[aeiou]+相匹配,或者更糟糕的是[a|e|i|o|u]。这是错的。字符类本身匹配输入中的一个且恰好一个字符。

相关问题

答案 1 :(得分:1)

这是一个很棒的Online Regular Expression Editor / Tester!这是你的[\d\s()+-]

答案 2 :(得分:1)

/^[\d\s\(\)\-]+$/

此表达式仅匹配数字,括号,空格和减号。 例如:

  • 888-111-2222
  • 888 111 2222
  • 8881112222
  • (888)111-2222
  • ...

答案 3 :(得分:0)

您需要转义括号,因为括号在正则表达式中用作特殊语法:

而不是'(':     \(

而不是')':     \)

此外,由于同样的原因,这不适用于'+':     \+

编辑:您可能希望使用字符类而不是'或'表示'|'因为它更具可读性:     [\s\d()+-]

答案 4 :(得分:0)

试试这个:

[\d\s-+()]