正则表达式PHP无法正确验证

时间:2013-05-10 13:34:38

标签: php regex validation preg-match

我正在尝试为我的代码编写正则表达式,正则表达式用于验证电话号码格式,前两位数字应为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);
}

为什么我会得到这样的结果?

1 个答案:

答案 0 :(得分:7)

您需要将表达式括在delimiter中,如下所示:

/0[1456789]{1}-[0-9]{6}/

您还应该添加字符串的开头和结尾锚点,否则您的表达式将匹配包含有效数字的任何内容:

/^0[1456789]{1}-[0-9]{6}$/

虽然我们在这里,{1}量词是多余的:

/^0[1456789]-[0-9]{6}$/

最后,[1456789]可以缩减为[14-9]。我个人不会这样做,因为恕我直言会降低可读性而没有真正的收益,但这可能在其他地方有用。