php - 带有特殊字符的电话号码的正则表达式
问题描述
我需要电话号码的正则表达式。电话号码可能包含特殊字符,例如+, ., /, -, 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)
解决方案
试试这个:
^(?=(?:[^\d\n]*\d){1,15}[])]?$)(?:[+]?\d++|[(][+]?\d++[)]|[[][+]?\d++[]])(?:[ .-]?+(?:\d\d++|[(]\d\d++[)]|[[]\d\d++[]]))*+$
你在这里有一个演示。
推荐阅读
- javascript - 动态更改表 ID
- sql-server - ASP.NET MVC 将数据从控制器/视图插入 SQL Server 数据库(实体框架数据库优先)
- android - facebook sdk:“必须使用活动访问令牌来查询有关当前用户的信息”
- c# - Unity - 我无法平滑我的 Kinematic Rigidbody2D 的连续运动
- swift - TypeError:无法读取未定义的属性“messageBody”
- html - Radio Buttons Customer Style
- java - Guice - Guice 中的 Spring Autowired 相当于什么
- javascript - 我想将 credential.access 令牌存储在一个变量中,我尝试了以下但没有成功
- c++ - C++ regex_search 与 perl 中的正则表达式匹配
- excel - 文件夹中的 Excel 电源查询