不同类型电话号码上的PHP正则表达式问题
我实际上被PHP正则表达式绊倒了,因为我必须测试不同类型的数字 我想检查前2个数字是否在我的数组中,但前0可能被国际数字替换(法国为+33) 我不知道如何测试我的以下不同类型:不同类型电话号码上的PHP正则表达式问题,php,regex,Php,Regex,我实际上被PHP正则表达式绊倒了,因为我必须测试不同类型的数字 我想检查前2个数字是否在我的数组中,但前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 有什么建议吗?谢谢 编辑: 我试过这个,但没有成功: ^ (?:(?:\+|
+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
有什么建议吗?谢谢
编辑:
我试过这个,但没有成功:
^
(?:(?:\+|00)33|0) #indicatif
\s*[6-7] #first number (from 1 to 9)
(?:[\s.-]*\d{2}){4} #End of the phone number
$
尝试:
$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点。好吧,我想我知道了
链接:
括号应该被认为是文字吗?是的,它们是不幸的
$pattern = "/(?:(?:(?:\+|00)33|0)|\(\+33\))(\s*|\(0\)|\s*\(0\)|\.)[6-7](?:[\s.-]*\d{2}){4}/";