正则表达式替换为捕获

Regex replace with captured

我想用它自己放弃“[”和“]”来替换字符串中的所有非字母数字字符。

我试过这个:

var text = "ab!@1b*. ef";
var regex = /\W/g;

var result  = text.replace(regex, "[[=10=]]");

console.log(result);

我期待得到:

ab[!][@]1b[*][.][ ]ef

但是我得到:

ab[[=12=]][[=12=]]1b[[=12=]][[=12=]][[=12=]]ef

如何使用 Javascript(node) 执行此操作?

您需要将组括在括号中以将其分配给 $1,如下所示:

var text = "ab!@1b*. ef";
var regex = /(\W)/g;

var result  = text.replace(regex, "[]");

console.log(result);