Добавьте один символ перед каждым специальным символом в строке в JavaScript - PullRequest
0 голосов
/ 31 мая 2019

Я хочу добавить один символ для каждого специального символа в строке с помощью регулярного выражения, которое я пробовал ниже выражения, но оно добавляется после специального символа.

Я ожидаю, что вывод добавит один символ для каждого специального символав строке.

var string1="aaa!dd,"
var expressionResult = text.replace(/([\/,!?_])/g, '/');

вывод должен быть aaa /! dd /,

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

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

var string1="aaa!dd,"
var expressionResult = string1.replace(/([\/,!?_])/g, '/$1');
console.log(expressionResult);

Подробнее в MDN .

Вам не нужна группа захвата, однако, вы можете использовать $& для ссылки на текст, соответствующий главному выражению:

var string1="aaa!dd,"
var expressionResult = string1.replace(/[\/,!?_]/g, '/$&');
console.log(expressionResult);

(Если вам нужно было сделать что-то более сложное в замене, вы можете передать функцию в качестве второго аргумента. Она вызывается с общим соответствием в качестве первого аргумента, за которым следуют аргументы для каждой группы захвата; ее возвращаемое значение используется в полученной строке. Вам это здесь не нужно, но ...)

1 голос
/ 31 мая 2019

Вы можете использовать обратную ссылку на группу $& MDN ref

var string1="aaa!dd,"
var expressionResult = string1.replace(/[\/,!?_]/g, '/$&');

console.log(expressionResult)

Специальным символом, если вы имеете в виду все, кроме алфавита и цифр, чем вы можете изменить свое регулярное выражение на

[^a-z\d]  - Match anything except alphabet and digit

var string1="aaa!dd,"
var expressionResult = string1.replace(/[^a-z\d]/g, '/$&');

console.log(expressionResult)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...