http://www.qdfuns.com/notes/17398/22e58fdb7d8b2208b87f908bc3d6af51.html

 

var string = "123abc321";
var result = string.replace(/(?!\d)/g, '#');
console.log(result);
//=>123#a#b#c321#

 

 

比如 PHP 手册里 有个 正则替换的函数 preg_replace 有的列子

$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
// 结果显示 April1,2003

这里就用上了 反响引用
$replacement 里的 ${1} 代表 (\w+) , $3代表 第2个 (\d+)
这个正则表达式 里 一共有 3个 () 也就是 可以 用 $1 $2 $3 调用 3个()里的 内容。

也可以使用 \1 \2 \3 来 代替 $1 $2 $3 都是一样的

那接下来 如果把 代码里的 正则表达式 改成下面的

$pattern = '/(?:\w+) (?:\d+), (\d+)/i';
那 这里 只有 一个 () 里的 内容 能使用
带 ?:的 ()里面内容是不会被 捕获的 ,所以 只能使用 $1 代表最后的 (\d+)

相关文章:

  • 2021-05-13
  • 2021-11-22
  • 2021-10-13
  • 2021-06-17
  • 2021-05-15
  • 2021-05-01
  • 2021-11-20
猜你喜欢
  • 2022-12-23
  • 2021-10-24
  • 2022-12-23
  • 2022-01-18
  • 2021-12-08
相关资源
相似解决方案