用于荷兰电话的带有regexp的PHP代码不起作用
实际上,我在下面的php代码中使用了中给出的解决方案中的表达式,但这段代码不起作用 代码很简单,但我不知道哪里出错了用于荷兰电话的带有regexp的PHP代码不起作用,php,regex,Php,Regex,实际上,我在下面的php代码中使用了中给出的解决方案中的表达式,但这段代码不起作用 代码很简单,但我不知道哪里出错了 define("REGEXP_PHONE_NL","(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)"); $string = "+31123456789"; //based on solution given in https://stack
define("REGEXP_PHONE_NL","(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)");
$string = "+31123456789"; //based on solution given in https://stackoverflow.com/questions/17949757/regular-expression-for-dutch-phone-number
echo(filter_var($string, FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>REGEXP_PHONE_NL))));
正则表达式本身可以工作,但您忘记在模式的开头和结尾(delimeters)放置相同的字符
您缺少在正则表达式模式中放置regexp标识符字符正斜杠(/),我在前后添加正斜杠
选中此项
PHP
“不工作”究竟是如何表现出来的?什么是输入,什么是输出,什么是期望的输出?此外,由于+31
后面的6
,您的$string
与荷兰电话号码模式不匹配,因为后面不是9个号码,而是10个号码。filter_var()根据给定的$string值(“+316123456789”)-而不是预期的返回值“+316123456789”,返回false。可能需要的输出:“用于计算荷兰式电话号码的正则表达式。可能的示例前缀:+31、+31(0),(+31)(0),0,0031后跟9个数字(可以包含空格或-)”正则表达式可以工作。在
<?php
define("REGEXP_PHONE_NL","/(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)/");
$string = "+316123456789"; //based on solution given in http://stackoverflow.com/questions/17949757/regular-expression-for-dutch-phone-number
var_dump(filter_var($string, FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>REGEXP_PHONE_NL))));
<?php
define("REGEXP_PHONE_NL","/(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)/");
$string = "+316123456789"; //based on solution given in http://stackoverflow.com/questions/17949757/regular-expression-for-dutch-phone-number
echo filter_var($string, FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>REGEXP_PHONE_NL)));
?>
+316123456789