我想我一直盯着php太久了,我不能为我的生活弄清楚为什么这不起作用。
我正在尝试将电话号码与此格式匹配(555.555.5555)。
if (preg_match("[0-9]{3}.[0-9]{3}.[0-9]{4}", "555.555.5555", $matches)){
echo matches[0];
}
我的第一个想法是我不知道是否。首先需要逃脱,或者我只是遗漏了一些非常简单的东西
答案 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