【问题标题】:Regular expression for phone number with special characters [duplicate]带有特殊字符的电话号码的正则表达式[重复]
【发布时间】:2019-09-10 08:42:49
【问题描述】:

我需要电话号码的正则表达式。电话号码可能包含特殊字符,例如+, ., /, -, 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)

【问题讨论】:

  • 你需要定义你的一般匹配规则,因为现在太模糊了。例如:此电话号码是否有效+91 12344 123 [[123]]?至于您当前的规则它可能是有效的,但是您可能不想允许这样的事情......请定义所有有效的规则。为每条规则添加额外的示例。
  • (+91) 9864081806 (+91)9864081806 (+91)(98640)81806 +91.98640.81806 [+91]09864081806 +91.986.408.1806 +91-986-408-1806 最大值15
  • 嗨,我添加了一些我需要的规则示例

标签: php regex regular-language


【解决方案1】:

试试这个:

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

你有一个演示 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2023-03-11
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多