首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电话号码的JavaScript RegEx,允许使用#符号,但不允许使用字母字符

电话号码的JavaScript RegEx,允许使用#符号,但不允许使用字母字符
EN

Stack Overflow用户
提问于 2020-12-31 06:28:19
回答 2查看 42关注 0票数 0

我正在尝试建立一个电话号码的javascript正则表达式。

我目前有this...but,它失败了。

代码语言:javascript
复制
^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})?[#. ]?([0-9]{10})$

示例:

代码语言:javascript
复制
(555) 555-1212 - Acceptable 
(555) 555-1212 #12525 - Acceptable (Up to 10 digits after the # sign)
5555551212 - Acceptable
555-555-1212 - Acceptable
555-555-1212 #12525 - Acceptable (Up to 10 digits after the # sign)

任何字母字符都应该是不可接受的

代码语言:javascript
复制
(555) 555-1212 ext 12525 - Unacceptable
(555) 555-1212 x12525 - Unacceptable

正则表达式一直是我的一个薄弱环节,我不确定如何让它工作。

EN

回答 2

Stack Overflow用户

发布于 2020-12-31 06:32:14

您可以使用

代码语言:javascript
复制
^\(?([0-9]{3})\)?[-. ]?([0-9]{3})(?:[-. ]?([0-9]{4}))?(?:[#. ]+([0-9]{1,10}))?$

请参阅regex demo

要点是: 1)将[#. ]?转换为[#. ]*,因为在接下来的数字之前可以有空格和# (或者也可能是. ),以及2)将[0-9]{10}转换为[0-9]{1,10}以匹配一到十个数字。

详细信息

  • ^ - string
  • \(?的开始-可选的(
  • ([0-9]{3}) -组1:三个digits
  • \)? -可选的)
  • [-. ]? -可选的delimiter
  • ([0-9]{3}) -组2:三个digits
  • (?:[-. ]?([0-9]{4}))? -可选的分隔符序列和捕获到组3
  • (?:[#. ]+([0-9]{1,10}))?中的四个数字-一个或多个分隔符的可选序列,然后捕获到组4
  • $中的一到十个数字。
票数 0
EN

Stack Overflow用户

发布于 2020-12-31 06:36:33

这将匹配您的所有测试用例,但如果它们中的任何一个混合在一起,它仍然可能失败。

代码语言:javascript
复制
\(?\d{3}\)?[\- ]?\d{3}[\-]?\d{4}( #\d{1,10})?

最好的办法是为您想要接受的每种格式创建一个单独的正则表达式,然后针对所有格式测试字符串,看看是否有匹配的。

我建议使用正则表达式测试器来实时查看查询匹配。

https://regex101.com/

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

https://stackoverflow.com/questions/65514353

复制
相关文章

相似问题

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