一个全面的电话号码验证正则表达式
我正在尝试整理一个综合的正则表达式来验证电话号码。 理想情况下,它将处理国际格式,但它必须处理美国格式,包括以下格式:
我会回答我目前的尝试,但我希望有人有更好的和/或更优雅的东西。
更好的选择...只需在输入中除去所有非数字字符(除了'x'和前导'+'符号),请注意,因为英国人倾向于以非标准形式+44 (0) ...
写数字+44 (0) ...
当记者问到使用国际长途码(在特定情况下,应该丢弃(0)
完全)。
然后,你最终得到的值如下:
12345678901
12345678901x1234
345678901x1234
12344678901
12345678901
12345678901
12345678901
+4112345678
+441234567890
然后当你展示时,重新格式化你的内心。 例如
1 (234) 567-8901
1 (234) 567-8901 x1234
事实证明,对此有一些规范,至少在北美,称为NANP。
你需要明确指定你想要的。 什么是合法分隔符? 空格,破折号和句点? 没有分隔符允许? 是否可以混合使用分隔符(例如,+ 0.111-222.3333)? 扩展名(例如111-222-3333 x 44444)将如何处理? 特殊数字如911怎么样? 地区代码是可选的还是必需的?
这是一个7或10位数字的正则表达式,允许扩展名,分隔符是空格,破折号或句点:
^(?:(?:+?1s*(?:[.-]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+))?$
.*
如果用户想给你他的电话号码,那么请相信他是正确的。 如果他不想给你,然后强迫他输入一个有效的数字,可以将他送到竞争对手的网站或让他输入一个随机字符串,以适应你的正则表达式。 我甚至可能会想要查看保费率性别线的数量,然后输入。
我还会在网站上考虑以下任何有效条目:
"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"
链接地址: http://www.djcxy.com/p/30565.html