Preg_match与

时间:2017-12-28 11:15:45

标签: php regex

我正在尝试验证西班牙语电话号码。我声明了一个正则表达式:

$telefono_regex = '/^(6|7|8|9)[0-9]{8}$/';

我检查号码:

if (!preg_match($telefono_regex, $telefono)){
     array_push($errores, 'telefono');
}

为什么这总是返回false?我已检入https://regex101.com/并找到匹配相同的数字。

2 个答案:

答案 0 :(得分:0)

你问题中的正则表达式以及regex101.com的第一次尝试是不同的。

假设您想要每隔三位数检查带有可选短划线或空格的数字(如第一次尝试使用regex101.com),您可以尝试:

$telefono_regex = '/^[6-9]{3}(?:[ -]?[0-9]{3}){2}$/';
  • ^[6-9]{3}:6到9位的三位数
  • (?:[ -]?[0-9]{3}):非捕获组匹配零个或一个空格或破折号([ -]?)后跟三个数字([0-9]{3}
  • {2}:匹配2次非捕获组

您可以查看here

答案 1 :(得分:0)

这是一个有效的PHP小提琴手

enter image description here

$telefono_regex = '/^[6-9][0-9]{8}$/';

$num='678912345';
echo preg_match($telefono_regex,$num);

答案是1。我将您的第一个(6|7|8|9) - 组替换为较短的[6-9],但两者都应该以相同的方式工作。