我正在尝试为我的代码编写正则表达式,正则表达式用于验证电话号码格式,前两位数字应为01,04,05,06,07,08,09,后跟短划线( - )后跟6位数字。
我使用了以下正则表达式:0[1456789]{1}-[0-9]{6}
。
我使用以下网站来确保我的正则表达式工作正常:RegExr我正在测试以下01-123456
但是,当我运行我的代码时,我的函数返回就好像数字无效,而不是。
这是我的代码:
function validHomePhone () {
global $home_phone;
$home_phone_regex = "0[1456789]{1}-[0-9]{6}";
return preg_match($home_phone_regex, $home_phone);
}
为什么我会得到这样的结果?
答案 0 :(得分:7)
您需要将表达式括在delimiter中,如下所示:
/0[1456789]{1}-[0-9]{6}/
您还应该添加字符串的开头和结尾锚点,否则您的表达式将匹配包含有效数字的任何内容:
/^0[1456789]{1}-[0-9]{6}$/
虽然我们在这里,{1}
量词是多余的:
/^0[1456789]-[0-9]{6}$/
最后,[1456789]
可以缩减为[14-9]
。我个人不会这样做,因为恕我直言会降低可读性而没有真正的收益,但这可能在其他地方有用。