首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建自定义电话号码regex

如何创建自定义电话号码regex
EN

Stack Overflow用户
提问于 2013-12-27 11:18:20
回答 4查看 1.4K关注 0票数 2

我正在使用php并从我的国家电话号码中搜索正确的regex。我不太擅长regex,但我对我的国家电话号码的可能模式做了一些研究,这些是:

  • 71 252 254
  • 75 89 95 52
  • +216 12 21 47 58
  • 00216 12 54 11 25
  • +216 12 789 541
  • 00216 71 245 852

请帮我拯救我的一天!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-27 11:22:26

假设您删除了所有空格(可能还有其他无效字符):

代码语言:javascript
运行
复制
((\+|00)216)?[0-9]{8}

这个正则表达式应该匹配所有提供的示例。

更新:

这是“完全”准则。它是基于维基百科的一篇文章

代码语言:javascript
运行
复制
((\+|00)216)?(74|71|78|70|72|9|4|2|5|73|75|76|77|79)[0-9]{6}

我不知道的是如何处理个位数区号,也许下面的正则表达式更好:

代码语言:javascript
运行
复制
((\+|00)216)?(74|71|78|70|72|09|04|02|05|73|75|76|77|79)[0-9]{6}

更新2:

最后的解决方案,这次是基于另一份文件

代码语言:javascript
运行
复制
((\+|00)216)?([2579][0-9]{7}|(3[012]|4[01]|8[0128])[0-9]{6}|42[16][0-9]{5})
票数 5
EN

Stack Overflow用户

发布于 2013-12-27 11:21:23

您可以使用:

代码语言:javascript
运行
复制
 if(preg_match(((\+|00)216)?[0-9]{8})) {
      // do something
    }

或尝试如下:

代码语言:javascript
运行
复制
if (!preg_match('/^\+\d+$/', $phone)) 
    fail("Invalid phone number");
票数 0
EN

Stack Overflow用户

发布于 2013-12-27 11:29:58

电话号码的一般规则很容易忽略空格和破折号。之后,您可以计数最小和最大的数字数和可选的加号。

代码语言:javascript
运行
复制
$filteredPhone = preg_replace('/[^\+\d]/', '', $phone);
$phoneFormatOk = preg_match('/^(\+?0*216)?\d{8}$/', $filteredPhone);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20799750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档