从文本中提取4位数字

时间:2010-12-29 18:34:07

标签: php regex preg-match

    preg_match_all('/([\d]+)/', $text, $matches);

    foreach($matches as $match)
    {
        if(length($match) == 4){
            return $match;
        }
    }

我想使用preg_match_all只提取四位数?

如果我想获得四位数或两位数? (第二种情况)

3 个答案:

答案 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位数部分(例如,防止匹配12312)。

答案 1 :(得分:3)

要匹配所有4位数,您可以使用正则表达式\d{4}

preg_match_all('/\b(\d{4})\b/', $text, $matches);

要匹配24位数,您可以使用正则表达式\d{2}|\d{4}或更短的正则表达式\d{2}(\d{2})?

preg_match_all('/\b(\d{2}(\d{2})?)\b/', $text, $matches);

See it

答案 2 :(得分:1)

像这样指定范围{4}

preg_match_all('/(\d{4})/', $text, $matches);

两位数:

preg_match_all('/(\d{2})/', $text, $matches);