Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同类型电话号码上的PHP正则表达式问题_Php_Regex - Fatal编程技术网

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

不同类型电话号码上的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 有什么建议吗?谢谢 编辑: 我试过这个,但没有成功: ^ (?:(?:\+|

我实际上被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
有什么建议吗?谢谢

编辑:

我试过这个,但没有成功:

^
   (?:(?:\+|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}/";