Регулярное выражение javascript оглядывается назад, чтобы заменить символ - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть длинные строки кода, которые выглядят примерно так:

hs2^Ȁ_^HELLO_x_fs2^Ȁ_^WORLD_x_gn3^Ȁ_^HOME_x_gs3^Ȁ…

Мне нужно сделать замену.Шестнадцатеричный символ используется многократно Ȁ, и перед ним всегда стоит ^.Мне нужно изменить число, которое появляется перед каждым ^Ȁ Уменьшить эти цифры на 1. Таким образом, окончательный результат будет ...

hs1^Ȁ_^HELLO_x_fs1^Ȁ_^WORLD_x_gn2^Ȁ_^HOME_x_gs2^Ȁ…

Я действительно имею дело только с двумя числамиздесь, 2 или 3, так что код будет выглядеть примерно так:здесь

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете использовать replace с функцией обратного вызова, которая будет использоваться для замены каждого вхождения, используя вашу собственную логику:

var str = "hs2^Ȁ_^HELLO_x_fs2^Ȁ_^WORLD_x_gn3^Ȁ_^HOME_x_gs3^Ȁ";
var res = str.replace(/\d(?=\^Ȁ)/g, num => --num);

console.log(res);

В приведенном выше регулярном выражении вы заметите следующее: (?=...).Это позитивный взгляд, как предлагает @revo.Это позволяет вам соответствовать ^Ȁ, но избегать передачи его в функцию обратного вызова.Только цифра (\d) будет передана и, следовательно, заменена.

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