preg_replace删除独立数字

use*_*334 6 php regex preg-replace

我想要从数字没有相邻字符(包括短划线)的字符串中替换所有独立数字,例如:

测试3弦49测试49test9 9

应该返回Test string 49Test 49Test9

到目前为止,我一直在玩:

   $str = 'Test 3 string 49Test 49test9 9';
   $str= preg_replace('/[^a-z\-]+(\d+)[^a-z\-]+?/isU', ' ', $str);
   echo $str;
Run Code Online (Sandbox Code Playgroud)

但是没有运气,这会回来

测试字符串9Test 9test9

遗漏了部分字符串,我想将[0-9]添加到比赛中,但无济于事,我错过了什么,看起来如此简单?

提前致谢

Phi*_*hil 7

尝试使用单词边界和负面环视作为连字符,例如

$str = preg_replace('/\b(?<!-)\d+(?!-)\b/', '', $str);
Run Code Online (Sandbox Code Playgroud)

  • 是完美的工作,不敢相信我之前没有使用过stackoverflow! (2认同)