在数字前后添加space

Add space before and after a number

我正在尝试在字符串中的任何数字前后添加 space。 例如,如果我有 JS35BX54NV33,我将得到 JS 35 BX 54 NV 33

我正在使用这个:

preg_replace("/(\d)([a-z])/i", " ", $mystring)

但它只在每个数字后添加 space。

感谢您的帮助!

只需尝试,

<?php

$re = '/(\d+)/m';
$str = 'JS35BX54NV33';
$subst = '  ';

$result = preg_replace($re, $subst, $str);

echo "The result of the substitution is ".$result;
?>

工作演示: https://3v4l.org/N6rSK

正则表达式 https://regex101.com/r/buz2AA/1

使用环视查找您希望在其中插入空格的零宽度位置。不需要捕获组。

  • \d 匹配数字字符。
  • \D 匹配一个非数字字符。
  • (?<=...)往后看
  • (?=...)展望未来

代码:(Demo)

$mystring = 'JS35BX54NV33';
var_export(preg_replace('/(?<=\D)(?=\d)|(?<=\d)(?=\D)/', ' ', $mystring));

输出:

'JS 35 BX 54 NV 33'

var_export() 用于显示没有生成前导或尾随空格。