首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式用户电话号码

正则表达式用户电话号码
EN

Stack Overflow用户
提问于 2011-12-10 05:35:20
回答 2查看 289关注 0票数 0

我有一个正则表达式,它匹配以下数字。

8702431273

973-882-9444转6114

1-223-332-2232

然而,它并不匹配。

(+1) 623-975-5296

605-367-7321

我如何修改它才能接受这些。

代码语言:javascript
复制
^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$
EN

回答 2

Stack Overflow用户

发布于 2011-12-10 05:49:00

在我看来,您可以简单地替换开头的这一部分:

代码语言:javascript
复制
^(?:1(?:[. -])?)?

有了这个:

代码语言:javascript
复制
^(?:\(?\+?1\)?(?:[. -])?)?

或者,如果您想严格使用括号匹配:

代码语言:javascript
复制
^(?:(?:\((?=.?1\)))?\+?1\)?(?:[. -])?)?
票数 1
EN

Stack Overflow用户

发布于 2011-12-10 06:24:50

我会将下一部分加入到您的regexp中,以匹配其他电话:

代码语言:javascript
复制
(?:\(\+\d\)\s)

它的意思是带数字的加号。如果括号内可以有更多的数字或后面有更多的空格,则对其进行调整。最终的regexp可能是这样的。

代码语言:javascript
复制
^(?:(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?|(?:\(\+\d\)\s))?([2-9]\d{2})(?:^(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$

我将我为适应新电话号码而更改的部分分成几行:

代码语言:javascript
复制
^
  (?:
    (?:1(?:[. -])?)?
    (?:\((?=\d{3}\)))?
      |
    (?:\(\+\d\)\s)
   )?
([2-9]\d{2})(?:^(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$

在我的测试中,它与您的帖子的五个电话一起工作。

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

https://stackoverflow.com/questions/8451980

复制
相关文章

相似问题

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