为了账号安全,请及时绑定邮箱和手机立即绑定

用于电话号码验证的全面正则表达式

用于电话号码验证的全面正则表达式

慕沐林林 2019-05-21 15:25:19
我正在尝试整合一个全面的正则表达式来验证电话号码。理想情况下它会处理国际格式,但它必须处理美国格式,包括以下内容:1-234-567-89011-234-567-8901 x12341-234-567-8901 ext12341(234)567-89011.234.567.89011/234/567/890112345678901我将回答我目前的尝试,但我希望有人能有更好的和/或更优雅的东西。用于电话号码验证的全面正则表达式
查看完整描述

4 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

更好的选择......只需在输入上删除所有非数字字符(除了'x'和前导'+'符号),因为英国倾向于在被+44 (0) ...要求使用国际前缀时以非标准形式写数字(在这种特定情况下,你应该(0)完全抛弃)。


然后,您最终得到如下值:


 12345678901

 12345678901x1234

 345678901x1234

 12344678901

 12345678901

 12345678901

 12345678901

 +4112345678

 +441234567890

然后当您显示时,重新格式化您的心灵内容。例如


  1 (234) 567-8901

  1 (234) 567-8901 x1234


查看完整回答
反对 回复 2019-05-21
?
狐的传说

TA贡献1804条经验 获得超3个赞

事实证明,至少在北美,有一种称为NANP的规范。

您需要准确指定所需内容。什么是合法分隔符?空格,破折号和句号?不允许分隔符?可以混合分隔符(例如,+ 0.111-222.3333)吗?如何处理扩展(例如,111-222-3333 x 44444)?特殊号码怎么样,比如911?区号是可选的还是必需的?

这是一个7位或10位数的正则表达式,允许扩展,分隔符是空格,短划线或句点:

^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$


查看完整回答
反对 回复 2019-05-21
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

.*

如果用户想要给你他的电话号码,那么请相信他是正确的。如果他不想给你,然后强迫他输入一个有效的号码将把他送到竞争对手的网站或让他输入一个适合你的正则表达式的随机字符串。我甚至可能想要查看优质性别性别的数量,然后输入。


我还会将以下任何内容视为网站上的有效条目:


"123 456 7890 until 6pm, then 098 765 4321"  

"123 456 7890 or try my mobile on 098 765 4321"  

"ex-directory - mind your own business"


查看完整回答
反对 回复 2019-05-21
  • 4 回答
  • 0 关注
  • 962 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信