0

我一直在寻找一个简单的电话号码正则表达式,它只匹配这种格式:(XXX) XXX-XXXX <---需要括号和后面的空格

对于我的一生,我无法弄清楚为什么这行不通(这是我自己尝试制作并且已经修改了几个小时的一个):

^[\(0-9\){3} [0-9]{3}-[0-9]{4}$

我在网上到处寻找具有特定格式匹配的正则表达式,但无济于事。请帮忙?

4

6 回答 6

6

以下正则表达式有效

^\(\d{3}\) \d{3}-\d{4}$

^ = start of line
\( = matches parenthesis open
\d = digit (0-9)
\) = matches parenthesis close
于 2012-10-28T17:38:47.330 回答
1

这是一个工作的

/^\(\d{3}\) \d{3}-\d{4}\s$/


你的问题:

要匹配数字,只需使用\dor [0-9](需要方括号,您在第一次出现时就忘记了它们)匹配括号使用\(and \)。它们必须被转义,否则它们将被解释为匹配并且您的正则表达式将无法编译

于 2012-10-28T17:39:13.180 回答
1

您遇到的问题是:

  1. 您需要使用反斜杠转义特殊字符(如括号),如下所示:\(
  2. 开头有一个未闭合的方括号。

否则,你很好!

于 2012-10-28T17:40:51.803 回答
0

[]定义字符类。例如“在这个单个字符位置,以下任何一个都可以匹配”。您的括号未对齐:

^[\(0-9\){3} [0-9]{3}-[0-9]{4}$
 ^---no matching closer

例如

^[0-9]{3} [0-9]{3}-[0-9]{4}$

会更接近你想要的。

于 2012-10-28T17:40:35.437 回答
0
/(\(\d{3}+\)+ \d{3}+\-\d{4}+)/ (000) 000-0000

/(\d{3}+\-\d{3}+\-\d{4}+)/ 000-000-0000
于 2014-02-06T01:23:06.407 回答
0

已编辑^\(?\d{3}\)?\s?\-?\d{3}\s?\-?\d{4}$

在 PHP 适用于以下

(999) 999 9999

(999) 999-9999

(999) 999-9999

999 999 9999

999 999-9999

999-999-9999

于 2020-06-09T00:52:46.703 回答