PHP:简单的正则表达式,以匹配数字的确切长度

时间:2015-02-27 02:40:04

标签: php regex

我正在尝试使用简单的正则表达式来匹配字符串中的5位数字。但是,此模式匹配5和超过5.

preg_match_all('#[0-9]{5}+#', 'one two 412312 three (51212 four five)', $matches);
print_r($matches);

结果:

Array(
    [0] => Array
    (
        [0] => 41231
        [1] => 51215
    )
)

我需要它才能匹配5位数字。

感谢。

3 个答案:

答案 0 :(得分:4)

您可以在此处使用word boundaries,并在范围运算符后删除+量词。

preg_match_all('~\b\d{5}\b~', $str, $matches);

如评论中所述,如果您需要匹配a51212a但不是412312中的五位数字,则可以使用lookaround断言的组合。

preg_match_all('~(?<!\d)\d{5}(?!\d)~', $str, $matches);

答案 1 :(得分:1)

试试这个:

preg_match_all('(\b\d{5}\b)', 'one two 412312 three (51212 four five)', $matches);
print_r($matches);

它匹配每组5位数字。

答案 2 :(得分:0)

您可以使用前瞻和后瞻:(?<!\d)[0-9]{5}(?!\d)