Php 从前面或后面有字符的文本中获取数字的第一个匹配项

Php 从前面或后面有字符的文本中获取数字的第一个匹配项,php,regex,preg-match,Php,Regex,Preg Match,假设我有一根绳子 $string1 = aed19209afg92019 $string2 = asd2919291029920192iig19202lm $string3 = defcka090slalso01 $string4 = a1b2 $string5 = 2b $string6 = dexter1 我怎样才能检索第一次出现的字符的所有数字 期望输出: 19209 2919291029920192 090 1 2 1 这是我目前的代码: $pattern = '/\w[0-9]\w

假设我有一根绳子

$string1 = aed19209afg92019
$string2 = asd2919291029920192iig19202lm
$string3 = defcka090slalso01
$string4 = a1b2
$string5 = 2b
$string6 = dexter1
我怎样才能检索第一次出现的字符的所有数字

期望输出:

19209
2919291029920192
090
1
2
1
这是我目前的代码:

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

不幸的是,它同时返回数字和字符串。

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

'~[a-z]\K\d+~i'
它将匹配一个ASCII字母(使用
[a-z]
~i
使其不区分大小写),将其从匹配项中删除(使用
\K
),并将在其后面抓取1+个数字。看

见:


请阅读并了解如何创建一个SO不是免费的编码或代码转换或调试或教程或库查找服务。我们尝试修复您的代码,我们不编写您的代码。您的代码在哪里?请查看regex。在这个网站上有很多关于它的问题。我知道有很多正则表达式问题,但我只需要得到第一个出现的
echo preg_替换(“/[^0-9,.]/”,“,”asd2919291029920192iig192lm”)
echo preg_替换(“/[^0-9,.]/”,“,$mString”)谢谢你的解释。也许我需要看看RegexBTW的备忘单,你也可以在这里使用lookback-
“~(?
$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";
    }
}