【发布时间】:2014-11-05 11:19:00
【问题描述】:
帮我写一个符合以下条件的正则表达式
- 数字可以以+开头
- 数字可以包含 - 或 .但不是 () 和 /
- 数字可以从0开始
- 字符串中的最小数字应为 9 位,不包括分机详细信息和开头 +
- 电话号码字段中的最大数字不应超过 14,不包括 +
- 如果字符串包含 ex/ext/x,那么后面的数字不应超过 5 个字符(通常为 4 个)
上面的应该满足下面的例子
0-1234-123456
+91-1234-56789012
+91-1234-56789012 x1234
+91-1234-56789012 ex1234
+91-1234-56789012 ext12345
+91-1234-56789012x1234
+91-1234-56789012ex1234
+91-1234-56789012ext12345
91-1234-56789012
91-1234-56789012 x1234
91-1234-56789012 ex1234
91-1234-56789012 ext12345
91-1234-56789012x1234
91-1234-56789012ex1234
91-1234-56789012ext12345
91123456789012
91123456789012 x1234
91123456789012 ex1234
91123456789012 ext12345
91123456789012x1234
91123456789012ex1234
91123456789012ext12345
91.1234.56789012
91.1234.56789012 x1234
91.1234.56789012 ex1234
91.12345.6789012 ext12345
91.12345.6789012x1234
91.12345.6789012ex1234
91.12345.6789012ext12345
1-234-567-8901
1-234-567-8901 x1234
1-234-567-8901 ext1234
1 234 567-8901
1.234.567.8901
12345678901
我在网上找到了几个链接,其中一个是 http://ericholmes.ca/php-phone-number-validation-revisited/
在stackoverflow上
A comprehensive regex for phone number validation
还有
^(?:(?:\+?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+))?$
不适用于上述许多情况
【问题讨论】:
-
你说数字可以包含 - 或 .但不是 () 和 /。但是您的列表中有
1 (234) 567-8901的示例。这是一个错误吗? -
更新感谢 taemyr
-
这是一个错误对不起泰米尔,我更新了我的错误
标签: php regex validation phone-number