帮助我为以下条件编写正则表达式
以上所述应满足以下示例
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/
以及堆叠溢出
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+))?$
不适用于上面的许多内容
发布于 2014-11-05 13:12:10
^\+?(\d[.\- ]*){9,14}(e?xt?\d{1,5})?$
解释;
^
断言字符串的开始\+?
匹配一个可选的加号(\d[.\- ]*){9,14}
介于9到14个位数之间,可能由空格、点或破折号分隔。(e?xt?\d{1,5})?
可以选择x,可能前面加上e,或者后面跟着t。字母后面总是1到5个数字。$
断言字符串的结束发布于 2014-11-05 13:26:19
这是可以做到的,但取决于您使用的是哪种语言(我们总是需要知道使用regexs进行编程),所以如果这不适用于您,请使用所使用的语言进行答复。我已经在PHP5上测试过。)
您的条件5(电话号码中最多14个字符)似乎是错误的,因为有几个示例包含16个字符,如果它们包含点或连字符。在任何情况下,这不会检查整个事件的总长度,因为它会进行其他长度检查;它需要第二个正则表达式,或者更好的是,预先检查字符串长度(例如在PHP中调用strlen)。
您可能需要在分机号中留出一个空格,例如电话分机1234;如果是这样的话,请在适当的位置添加\s*。
我希望这能帮到你。
^\+?\d[\d-\.\s]{8,15}\s?((ext|ex|x)\d{3,5})?$
https://stackoverflow.com/questions/26755928
复制相似问题