3

可能重复:
用于电话号码验证的综合正则表达式

我非常接近我需要的完整正则表达式。但是,我似乎无法获得允许的可选空白。

正则表达式

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

要求 - 只有这四个

111-111-1111 - 工程

(111)111-1111 - 作品

(111) 111-111 - 不捕获

1111111111 - 作品

如何在括号后添加可选空格?

4

4 回答 4

5
^(\(?\d{3}\)*\s?\-?\d{3}\-?\d{4})$

*\s 表示 0 或 1 个空格字符。

编辑: 实际上,我更喜欢这个版本,因为它允许破折号或空格,但不能两者兼而有之。还, ?表示 0 或 1,* 表示 0 或更多:

^(\(?\d{3}\)?[\s,\-]?\d{3}\-?\d{4})$
于 2012-10-01T19:06:01.747 回答
4

哪些\(?\b[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}\b匹配3334445555, 333.444.5555, 333-444-5555, 333 444 5555,(333) 444 5555以及它们的所有组合。

更新

您遇到了 REGEX 的限制,因此丑陋的解决方案确实是:

(\d{3}-\d{3}-\d{4}|\(\d{3}\)\s?\d{3}-\d{4}|\d{10})

例子

于 2012-10-01T19:06:39.733 回答
1

有时最好匹配三个完整表达式之一:

^(\d{11}|(\d{3}-){2}\d4|\(\d{3}\) ?\d\d\d-\d\d\d)$

于 2012-10-01T19:24:21.147 回答
0

我不会根据格式来处理正则表达式,而是根据输入的数字来处理。这个问题显示了你应该采用的答案:

用于电话号码验证的综合正则表达式

于 2012-10-01T19:09:26.433 回答