php regex preg_match中的简单错误

时间:2014-01-22 17:06:35

标签: php regex

我想我一直盯着php太久了,我不能为我的生活弄清楚为什么这不起作用。

我正在尝试将电话号码与此格式匹配(555.555.5555)。

if (preg_match("[0-9]{3}.[0-9]{3}.[0-9]{4}", "555.555.5555", $matches)){
    echo matches[0];
}

我的第一个想法是我不知道是否。首先需要逃脱,或者我只是遗漏了一些非常简单的东西

2 个答案:

答案 0 :(得分:2)

正则表达式需要delimiter,例如/#。分隔符用于将正则表达式与可能的modifiers分开。

if (preg_match("/[0-9]{3}\.[0-9]{3}\.[0-9]{4}/", "555.555.5555", $matches)){
    echo matches[0];
}

我还将点数更改为\.,因为. 每个字符(除了新行,感谢评论中的@Amal Murali),{{1} }只是一个点。

答案 1 :(得分:1)

如果未转义,则点字符(.)匹配任何字符(新行除外)。如果你想匹配文字.字符,你需要用反斜杠转义 - 所以你需要写\.

您还需要将其包装在有效delimiters中,例如/。分隔符可以是任何非字母数字,非反斜杠,非空白字符。 ~#/等是一些最常用的分隔符。我在这里使用正斜杠:

if (preg_match("/[0-9]{3}\.[0-9]{3}\.[0-9]{4}/", "555.555.5555", $matches)){
    echo $matches[0];
}

输出:

555.555.5555