从包含字符之前或之后的字符的文本中获取第一个数字

时间:2017-04-05 09:37:32

标签: php regex preg-match

假设我有一个字符串

$string1 = aed19209afg92019
$string2 = asd2919291029920192iig19202lm
$string3 = defcka090slalso01
$string4 = a1b2
$string5 = 2b
$string6 = dexter1

如何才能首次使用char来检索所有数字?

期望的输出:

19209
2919291029920192
090
1
2
1

这是我目前的代码:

$pattern = '/\w[0-9]\w/'
$hasMatch = preg_match($pattern, $details, $returnMatch);
if($hasMatch){
    return $returnMatch[0];
}

不幸的是它返回了数字和字符串。

1 个答案:

答案 0 :(得分:1)

如果您需要在PHP中找到与正则表达式匹配的第一个匹配项,则需要使用preg_match。你需要的模式是

'~[a-z]\K\d+~i'

它将匹配一个ASCII字母([a-z]~i使其不区分大小写),将其从匹配中删除(使用\K),并将获得1+位数在它之后。请参阅regex demo

请参阅PHP demo

$strs = array("aed19209afg92019", "asd2919291029920192iig19202lm", "defcka090slalso01", "a1b2", "2b", "dexter1");
foreach ($strs as $s) {
    if (preg_match('~[a-z]\K\d+~i', $s, $m))
    {
        echo $m[0] . "\n";
    }
}