Tio*_*neb 3 php regex preg-replace
我正在尝试在字符串中的任何数字之前和之后添加空格。例如,如果我有 JS35BX54NV33,我将得到 JS 35 BX 54 NV 33
我正在使用这个:
preg_replace("/(\\d)([a-z])/i", "$1 $2", $mystring)
Run Code Online (Sandbox Code Playgroud)
但它只在每个数字后面添加空格。
使用环顾查找您希望插入空格的零宽度位置。不需要捕获组。
\d匹配数字字符。\D匹配非数字字符。(?<=...)看着后面。(?=...)向前看。代码:(演示)
$mystring = 'JS35BX54NV33';
var_export(preg_replace('/(?<=\D)(?=\d)|(?<=\d)(?=\D)/', ' ', $mystring));
Run Code Online (Sandbox Code Playgroud)
输出:
'JS 35 BX 54 NV 33'
Run Code Online (Sandbox Code Playgroud)
var_export()用于表明没有生成前导或尾随空格。
实际上,一种更有效的模式是/\D+\K(?=\d)|\d+\K(?=\D)/避免昂贵的后向查找,而是使用贪婪量词。这个新模式在示例字符串上只需要 47 个步骤,而我之前的模式需要 135 个步骤。