首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP正则表达式在不同类型电话号码上的问题

PHP正则表达式在不同类型电话号码上的问题
EN

Stack Overflow用户
提问于 2017-04-28 17:12:05
回答 2查看 37关注 0票数 1

因为我必须测试不同类型的数字,所以我实际上被PHP正则表达式搞得焦头烂额。

我想检查前两个数字是否在我的数组中,但有可能第一个0被国际数字取代(对于法国,+33)。

我不知道如何测试我的以下不同类型:

代码语言:javascript
复制
   +33 (0)6
   +33(0)6
   +33.6
   (+33).6
   (+33)6
   06

   +33 (0)7
   +33(0)7
   +33.7
   (+33).7
   (+33)7
   07

有什么建议可以做到吗?谢谢

编辑:

我试过了,但不能使用parentesis:

代码语言:javascript
复制
^
   (?:(?:\+|00)33|0)    #indicatif
   \s*[6-7]             #first number (from 1 to 9)
   (?:[\s.-]*\d{2}){4}  #End of the phone number
$
EN

回答 2

Stack Overflow用户

发布于 2017-04-28 17:28:33

尝试使用:

代码语言:javascript
复制
$pattern = '/^(\+33( ?\(0\)|\.)|\(\+33\)\.?|0)[67][0-9]+$/';
$my_number = "+33.678910";
if(preg_match($pattern, $my_number)) // do something

如果数字位数必须是固定的,则可以将最后一个+替换为必须跟在首个6(或7)后面的数字(或数字范围)。

例如:

代码语言:javascript
复制
/^(\+33( ?\(0\)|\.)|\(\+33\)\.?|0)[67][0-9]{5}$/
/^(\+33( ?\(0\)|\.)|\(\+33\)\.?|0)[67][0-9]{5,7}$/

第一个正则表达式意味着最初的6(或7)必须紧跟5位数字。第二个是从5点到7点。

票数 1
EN

Stack Overflow用户

发布于 2017-04-28 17:44:47

好吧,我想我会找到答案的。

链接:Regex

代码语言:javascript
复制
$pattern = "/(?:(?:(?:\+|00)33|0)|\(\+33\))(\s*|\(0\)|\s*\(0\)|\.)[6-7](?:[\s.-]*\d{2}){4}/";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43676407

复制
相关文章

相似问题

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