1

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

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

4

1 回答 1

7

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

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

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

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

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

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

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

于 2013-05-10T13:36:07.950 回答