preg_match_all('/([\d]+)/', $text, $matches);
foreach($matches as $match)
{
if(length($match) == 4){
return $match;
}
}
我想使用preg_match_all只提取四位数?
如果我想获得四位数或两位数? (第二种情况)
答案 0 :(得分:12)
使用
preg_match_all('/(\d{4})/', $text, $matches);
return $matches;
顺便说一句,如果只有\d
匹配,则无需使用字符类(我省略了方括号)。
如果您想匹配4位或2位数字,请使用
preg_match_all('/(?<!\d)(\d{4}|\d{2})(?!\d)/', $text, $matches);
return $matches;
在这里,我使用负向后备(?<!\d)
和否定前瞻(?!\d)
来阻止匹配3位数字的2位数部分(例如,防止匹配123
为12
)。
答案 1 :(得分:3)
要匹配所有4
位数,您可以使用正则表达式\d{4}
preg_match_all('/\b(\d{4})\b/', $text, $matches);
要匹配2
或4
位数,您可以使用正则表达式\d{2}|\d{4}
或更短的正则表达式\d{2}(\d{2})?
preg_match_all('/\b(\d{2}(\d{2})?)\b/', $text, $matches);
答案 2 :(得分:1)
像这样指定范围{4}
:
preg_match_all('/(\d{4})/', $text, $matches);
两位数:
preg_match_all('/(\d{2})/', $text, $matches);