我试图找到一种方法来获取字母字符之前的所有数字字符。下面是一些字符串示例。
1234-89783
453 S2 342
3456j5 789
所以我需要使用正则表达式从上面的数据中获取值,结果应该是 1234-89783、453、3456。
删除字母字符后的值,如果字母之前有空格,请删除空格。 453 S2 342 到 453,末尾字符没有空格。
只需删除第一个字母字符及其之后的所有内容即可。
$output = preg_replace('/ *[A-Za-z].*/s', '', $input);
您可以使用preg_split:
$data = [
"1234-89783",
"453 S2 342",
"3456j5 789",
];
$output = [];
foreach ($data as $item):
$split = preg_split("/[A-Za-z]+/", $item);
$output[] = $split[0];
endforeach;
print_r($output);
这将通过正则表达式(在本例中为小写和大写字母(拆分输入字符串。
在上面的示例中,我们将第 0 项从preg_split
推送到数组中。根据您要对输出执行的操作,您可能需要使用trim()
清理空格。因此,要像您的问题一样输出逗号分隔字符串,您可以执行以下操作:
foreach ($data as $item):
$split = preg_split("/[A-Za-z]+/", $item);
$output[] = trim($split[0]);
endforeach;
echo implode(", ", $output);
这将输出:
1234-89783, 453, 3456
也试试这个
<?php
$string="1234-89783 453 S2 342 3456j5 789";
$res = preg_replace("/[^-0-9s]/", "", $string);
echo $res;
?>