因为我必须测试不同类型的数字,所以我实际上被PHP正则表达式搞得焦头烂额。
我想检查前两个数字是否在我的数组中,但有可能第一个0被国际数字取代(对于法国,+33)。
我不知道如何测试我的以下不同类型:
+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:
^
(?:(?:\+|00)33|0) #indicatif
\s*[6-7] #first number (from 1 to 9)
(?:[\s.-]*\d{2}){4} #End of the phone number
$发布于 2017-04-28 17:28:33
尝试使用:
$pattern = '/^(\+33( ?\(0\)|\.)|\(\+33\)\.?|0)[67][0-9]+$/';
$my_number = "+33.678910";
if(preg_match($pattern, $my_number)) // do something如果数字位数必须是固定的,则可以将最后一个+替换为必须跟在首个6(或7)后面的数字(或数字范围)。
例如:
/^(\+33( ?\(0\)|\.)|\(\+33\)\.?|0)[67][0-9]{5}$/
/^(\+33( ?\(0\)|\.)|\(\+33\)\.?|0)[67][0-9]{5,7}$/第一个正则表达式意味着最初的6(或7)必须紧跟5位数字。第二个是从5点到7点。
发布于 2017-04-28 17:44:47
好吧,我想我会找到答案的。
链接:Regex
$pattern = "/(?:(?:(?:\+|00)33|0)|\(\+33\))(\s*|\(0\)|\s*\(0\)|\.)[6-7](?:[\s.-]*\d{2}){4}/";https://stackoverflow.com/questions/43676407
复制相似问题