首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >匹配标准10位电话号码的正则表达式

匹配标准10位电话号码的正则表达式
EN

Stack Overflow用户
提问于 2013-05-23 02:21:42
回答 13查看 563.2K关注 0票数 178

我想为支持以下格式的标准US类型电话号码编写一个正则表达式:

代码语言:javascript
复制
###-###-####
(###) ###-####
### ### ####
###.###.####

其中#表示任意数字。到目前为止,我想出了以下表达式

代码语言:javascript
复制
^[1-9]\d{2}-\d{3}-\d{4}
^\(\d{3}\)\s\d{3}-\d{4}
^[1-9]\d{2}\s\d{3}\s\d{4}
^[1-9]\d{2}\.\d{3}\.\d{4}

分别使用。我不太确定最后一条对于虚线检查是否正确。我还想知道是否有任何方法可以编写单个表达式,而不是我提到的4个不同的表达式,以迎合我提到的不同格式。如果是这样的话,我不知道该怎么做。另外,我如何修改表达式,以便还可以包括一个支持区号作为可选组件的条件。就像这样

代码语言:javascript
复制
+1 ### ### ####

其中+1是区号,是可选的。

EN

回答 13

Stack Overflow用户

发布于 2019-06-05 04:28:25

^(\+\d{1,2}\s?)?1?\-?\.?\s?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$

匹配这些电话号码:

代码语言:javascript
复制
1-718-444-1122
718-444-1122
(718)-444-1122
17184441122
7184441122
718.444.1122
1718.444.1122
1-123-456-7890
1 123-456-7890
1 (123) 456-7890
1 123 456 7890
1.123.456.7890
+91 (123) 456-7890
18005551234
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234
18001234567
1 800 123 4567
1-800-123-4567
+18001234567
+1 800 123 4567
+1 (800) 123 4567
1(800)1234567
+1800 1234567
1.8001234567
1.800.123.4567
+1 (800) 123-4567
18001234567
1 800 123 4567
+1 800 123-4567
+86 800 123 4567
1-800-123-4567
1 (800) 123-4567
(800)123-4567
(800) 123-4567
(800)1234567
800-123-4567
800.123.4567
1231231231
123-1231231
123123-1231
123-123 1231
123 123-1231
123-123-1231
(123)123-1231
(123)123 1231
(123) 123-1231
(123) 123 1231
+99 1234567890
+991234567890
(555) 444-6789
555-444-6789
555.444.6789
555 444 6789
18005551234
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1.800.555.1234
+1.800.555.1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234
(003) 555-1212
(103) 555-1212
(911) 555-1212
18005551234
1 800 555 1234
+86 800-555-1234
1 (800) 555-1234

请参阅regex101.com

票数 27
EN

Stack Overflow用户

发布于 2014-11-26 00:06:32

这是我创建的一个相当紧凑的文件。

代码语言:javascript
复制
Search: \+?1?\s*\(?-*\.*(\d{3})\)?\.*-*\s*(\d{3})\.*-*\s*(\d{4})$

Replace: +1 \($1\) $2-$3

针对以下用例进行了测试。

代码语言:javascript
复制
18001234567
1 800 123 4567
1-800-123-4567
+18001234567
+1 800 123 4567
+1 (800) 123 4567
1(800)1234567
+1800 1234567
1.8001234567
1.800.123.4567
1--800--123--4567
+1 (800) 123-4567
票数 9
EN

Stack Overflow用户

发布于 2016-10-28 19:35:18

在jsfiddle上添加了一个使用上述解决方案的示例。我已经根据我的客户要求修改了代码。希望这也能帮助到一些人。

代码语言:javascript
复制
/^\s*(?:\+?(\d{1,3}))?[- (]*(\d{3})[- )]*(\d{3})[- ]*(\d{4})(?: *[x/#]{1}(\d+))?\s*$/

See Example Here

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16699007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档