Регулярное выражение заменить захваченным [дубликатом]

Я хочу заменить все не буквенно-цифровые символы в строке на самоотдачу для «[» и «]».

Я пробовал это:

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

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

console.log(result);

Я ожидал получить:

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

Но вместо этого я получаю:

ab[$0][$0]1b[$0][$0][$0]ef

Как я могу сделать это с помощью Javascript (узел)?


person Jonny Piazzi    schedule 23.08.2017    source источник
comment
Не нужно оборачиваться группами захвата. Используйте 1_   -  person Wiktor Stribiżew    schedule 24.08.2017


Ответы (1)


Вам нужно заключить группу в круглые скобки, чтобы присвоить ей значение $1, например:

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

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

console.log(result);

person ishegg    schedule 23.08.2017