You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Regex从字符串中提取美国电话号码

美国电话号码正则匹配方案

别发愁啦,我帮你整理了一个能匹配绝大多数美国电话号码格式的正则表达式,还会给你拆解每个部分的作用,方便你理解和调整~

通用正则表达式(支持分机号)

这个正则可以覆盖几乎所有常见的美国电话号码格式,包括带国家码、不同分隔符、带分机号的情况:

^(?:\+1\s?)?(?:\(\d{3}\)|\d{3})[-.\s]?\d{3}[-.\s]?\d{4}(?:\s?(?:x|ext|extension)\s?\d{1,5})?$

正则各部分拆解

我把上面的正则拆开来解释,你就能明白它为什么能匹配这么多格式了:

  • ^(?:\+1\s?)?:匹配可选的美国国家码+1,后面可以跟空格或者直接连接区号,比如+1 或者+1都能匹配
  • (?:\(\d{3}\)|\d{3}):匹配3位区号,支持两种格式——带括号的(123)或者纯数字的123
  • [-.\s]?:匹配区号和中间三位之间可选的分隔符,横杠-、点.、空格 都可以,也可以没有分隔符
  • \d{3}:固定匹配中间的3位数字
  • [-.\s]?:匹配中间三位和最后四位之间的可选分隔符,规则和上面一样
  • \d{4}:固定匹配最后的4位数字
  • (?:\s?(?:x|ext|extension)\s?\d{1,5})?$:匹配可选的分机号,支持x、ext、extension作为前缀,前后可以带空格,后面跟1-5位的分机号码

能匹配的常见格式示例

这个正则可以识别以下这些典型的美国电话号码:

  • 纯数字无分隔:1234567890
  • 带括号区号:(123) 456-7890
  • 横杠分隔:123-456-7890
  • 点分隔:123.456.7890
  • 带国家码:+1 123-456-7890、+1(123)4567890
  • 带分机号:123-456-7890 x1234、(123)456-7890 ext 987

简化版(不需要分机号)

如果你的场景里不需要匹配分机号,可以把正则简化成下面这样:

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

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:10:48