[英]regex to validate phone number
帮我写以下条件的正则表达式
以上应满足以下示例
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上
也
^(?:(?:\+?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+))?$
不适用于上述多种情况
^\+?(\d[.\- ]*){9,14}(e?xt?\d{1,5})?$
说明;
^
断言字符串的开始 \\+?
匹配可选的加号 (\\d[.\\- ]*){9,14}
介于9到14个数字之间,可能由空格,点或破折号分隔。 (e?xt?\\d{1,5})?
可选地,ax可能以e开头或以t开头。 字母后面总是1到5个数字。 $
字符串结尾 可以做到这一点,但要取决于您使用的是哪种编程语言(我们始终需要使用正则表达式知道这一点,因此,如果这对您不起作用,请使用所使用的语言进行回复。我已经在PHP5中对其进行了测试。)
您的条件5(电话号码中最多14个字符)似乎是错误的,因为如果您的几个示例包含点或连字符,则它们包含16个字符。 无论如何,这不会检查整个物件的总长度,因为它会检查另一个长度。 它需要第二个正则表达式,或者更好的是,事先检查字符串长度(例如,在PHP中通过调用strlen)。
您可能需要在分机号中留一个空格,例如ext 1234;。 如果是这样,请在适当的位置添加\\ s *。
我希望这有帮助。
^\+?\d[\d-\.\s]{8,15}\s?((ext|ex|x)\d{3,5})?$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.