用于荷兰电话的带有regexp的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

实际上,我在下面的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://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