我正试图建立一个全面的重码来验证电话号码。理想情况下,它可以处理国际格式,但它必须处理美国格式,包括以下内容。
我将用我目前的尝试来回答,但我希望有人有更好和/或更优雅的东西。
事实证明,至少在北美地区,有一些这方面的规范,称为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+))?$