我正在尝试使用简单的正则表达式来匹配字符串中的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位数字。
感谢。
答案 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)