首页 > 解决方案 > 带有特殊字符的电话号码的正则表达式

问题描述

我需要电话号码的正则表达式。电话号码可能包含特殊字符,例如+, ., /, -, space, (, ), [, ].

一些例子:

(+91) 9864081806
(+91)9864081806
(+91)(98640)81806
+91.98640.81806
[+91]09864081806
+91.986.408.1806
+91-986-408-1806
Maximum numbers = 15

特殊字符可以存在于代码中的任何位置。一个左括号应该有一个右括号。

我创建了这种模式,但它不起作用:

preg_match('/^[\[\(\0-9\s.\_\-\+\/\)\]]{3,15}$/', $phone_no)

标签: phpregexregular-language

解决方案


试试这个:

^(?=(?:[^\d\n]*\d){1,15}[])]?$)(?:[+]?\d++|[(][+]?\d++[)]|[[][+]?\d++[]])(?:[ .-]?+(?:\d\d++|[(]\d\d++[)]|[[]\d\d++[]]))*+$

你在这里有一个演示。


推荐阅读