Javascript 尝试编写只匹配数字、空格、括号和#x2B的正则表达式;及-

Javascript 尝试编写只匹配数字、空格、括号和#x2B的正则表达式;及-,javascript,regex,validation,Javascript,Regex,Validation,我想写一个正则表达式,检查数字,空格,括号,+和- 这就是我到目前为止所做的: /\d|\s|\-|\)|\(|\+/g 但是我在正则表达式中得到了这个错误:unmatched) 任何建议都会有帮助。 谢谢您需要转义括号,因为括号在正则表达式中用作特殊语法: 而不是“(”: \( 而不是“)”: \) 此外,由于同样的原因,这对“+”不起作用: \+ 编辑:您可能希望使用字符类而不是带有“|”的“或”符号,因为它更具可读性: [\s\d()+-]您需要对括号进行转义,因为括号在正则表达式中用作

我想写一个正则表达式,检查数字,空格,括号,+和- 这就是我到目前为止所做的:

/\d|\s|\-|\)|\(|\+/g
但是我在正则表达式中得到了这个错误:unmatched) 任何建议都会有帮助。
谢谢

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

而不是“(”:
\(

而不是“)”:
\)

此外,由于同样的原因,这对“+”不起作用:
\+

编辑:您可能希望使用字符类而不是带有“|”的“或”符号,因为它更具可读性:
[\s\d()+-]

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

而不是“(”:
\(

而不是“)”:
\)

此外,由于同样的原因,这对“+”不起作用:
\+

编辑:您可能希望使用字符类而不是带有“|”的“或”符号,因为它更具可读性:
[\s\d()+-]
使用字符类:

/[\d\s()+-]/g
如果它是一个数字
\d
、空白
\s
、文字
、文字
、文字
+
或文字
-
,那么它将匹配单个字符。将
-
放在字符类的最后一位是使其成为文字
-
的一种简单方法;否则,它可能会成为范围定义元字符(例如
[a-Z]

一般来说,使用字符类(例如
[aeiou]
)比一次匹配一个字符(例如
a | e | i | o | u
)更具可读性。它更简洁、可读性更强,并且可以自然地将字符分组在一起,因此您可以执行例如
[aeiou]+
来匹配元音序列

工具书类

警告 初学者有时会错误地将字符类与
[a | e | i | o | u]
相匹配,或者更糟的是,
[this | that]
。这是错误的。字符类本身与输入中的一个字符完全匹配

相关问题
使用字符类:

/[\d\s()+-]/g
如果它是一个数字
\d
、空白
\s
、文字
、文字
、文字
+
或文字
-
,那么它将匹配单个字符。将
-
放在字符类的最后一位是使其成为文字
-
的一种简单方法;否则,它可能会成为范围定义元字符(例如
[a-Z]

一般来说,使用字符类(例如
[aeiou]
)比一次匹配一个字符(例如
a | e | i | o | u
)更具可读性。它更简洁、可读性更强,并且可以自然地将字符分组在一起,因此您可以执行例如
[aeiou]+
来匹配元音序列

工具书类

警告 初学者有时会错误地将字符类与
[a | e | i | o | u]
相匹配,或者更糟的是,
[this | that]
。这是错误的。字符类本身与输入中的一个字符完全匹配

相关问题
试试这个:

[\d\s-+()]
试试这个:

[\d\s-+()]
这是一个很棒的游戏!这是你的书。

这是一本很棒的书!这是你的护照

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

  • 888-111-2222
  • 8881112222
  • 888112222
  • (888)111-2222
此表达式仅匹配数字、括号、空格和减号。 例如:

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

@Christian Hayter-你删掉了他的问题。我们现在该怎么回答呢?丹尼尔:事实上,如果你看第一次修订版,它已经是这样了。Christian没有添加\转义。“我现在也搞不清楚这个问题是关于什么的。”“一夫多妻制:看起来好像在什么地方出了乱子;我回到了原来的版本。@Borealid,@Daniel:那么,当模式是
/\d\s\124\-\ 124\\)\ 124\(\ 124\+/g
?因为我觉得这很好。我也很困惑…
/\d\s\124\-\ 124\\)\ 124\(\ 124\+/g
在原始源代码中,但Christian的修订版显示它是从
/\d\124s>更改而来的。)|(|+/g
\d |\s | \-| \)|\(|\+/g
,当时他所做的只是重新格式化空白。也许这是SO修订代码中的一个错误?@Christian Hayter-你删掉了他的问题。我们现在该怎么回答?请撤销。@Daniel:事实上,如果你看第一次修订,已经是这样了。Christian没有添加\转义符。我现在也不知道问题是什么是关于。@Polygene润滑油:看起来好像在什么地方出了问题;我又回到了原来的状态。@Borealid,@Daniel:那么,当模式是
/\d\s\124\-\ 124\\)\ 124\(\ 124\+/g
)时,有人能重现OP的问题吗?因为这对我来说很好。我也很困惑…
/\d\s\124\-\ 124\\)|\(|\+/g
在原始源代码中,但Christian的修订版显示它已从
/\d |\s |-|)|(|+/g
更改为
\d |\s |-|\)|\(| \++/g
,当时他所做的只是重新格式化空白。也许这是SO修订代码中的一个错误?虽然
-
直接放在速记字符类
\s
之后,因此不需要转义,但我还是选择将它(未转义)放在字符类的开头或结尾,以免引起混淆:
[-\d\s+()]
[\d\s+()-]
。虽然
-
直接放在简写字符类
\s
之后,因此不需要转义,但我会选择将其(未转义)放在字符类的开头或结尾,以免引起混淆:
[-\d\s+()]
[\d\s+()-]