首页 > 解决方案 > preg_replace 最后 4 位数字之间的空格

问题描述

我知道如何从字符串中删除空格:

$text = preg_replace('/\s+/', '', $text);

但是,如果我只需要删除任何数字的最后 4 位之间的空格怎么办?

举个例子:

12895 6 7 8 9- 我希望它变成12895 6789

或者

2546734 34 55- 我希望它变成2546734 3455

或者

2334734556 341 5- 我希望它变成2334734556 3415

我怎么做?

** 更新:我想删除最后四位数字之间的空格,而不是在第一个空格之后(因为所有示例都显示了空格)。所以这样的事情会是一个更好的例子:

23347345563 4 1 5- 我希望它变成23347345563415

标签: phppreg-replace

解决方案


preg_replace你可以用这个正则表达式来实现你想要的:

\s+(?=(\d\s*){0,3}$)

它在它和行尾之间寻找一个空格,后跟 0 到 3 个数字(带有可选空格)(使用正向前瞻)。只需用空字符串 ( '') 替换这些空格:

$text = preg_replace('/\s+(?=(\d\s*){0,3}$)/', '', '12895 6 7 8 9');
echo "$text\n";
$text = preg_replace('/\s+(?=(\d\s*){0,3}$)/', '', '2546734 34 55');
echo "$text\n";
$text = preg_replace('/\s+(?=(\d\s*){0,3}$)/', '', '2334734556 341 5');
echo "$text\n";
$text = preg_replace('/\s+(?=(\d\s*){0,3}$)/', '', '23347345563 4 1 5');
echo "$text\n";

输出:

12895 6789
2546734 3455
2334734556 3415
23347345563415

3v4l.org 上的演示


推荐阅读