我正在尝试编写一个常规来检查数字,空格,括号,+和 - 这就是我到目前为止所做的:
/\d|\s|\-|\)|\(|\+/g
但我在正则表达式中得到此错误:无法匹配) 任何建议都会有所帮助 感谢
答案 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\(\)\-]+$/
此表达式仅匹配数字,括号,空格和减号。 例如:
答案 3 :(得分:0)
您需要转义括号,因为括号在正则表达式中用作特殊语法:
而不是'(':
\(
而不是')':
\)
此外,由于同样的原因,这不适用于'+':
\+
编辑:您可能希望使用字符类而不是'或'表示'|'因为它更具可读性:
[\s\d()+-]
答案 4 :(得分:0)
试试这个:
[\d\s-+()]