Нежелательная косая черта при создании регулярных выражений - PullRequest
0 голосов
/ 22 января 2019

По этот метод Я хочу использовать переменную в регулярном выражении, но она создает дополнительные / в выводе:

var counter = 0,
    replace = "/\$" + counter;
    regex = new RegExp(replace);
    console.log(regex);

Вывод /\/$0/ пока я ожидал /\$0/, не могли бы вы сказать мне, что с ним не так?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вы добавляете / к строке регулярного выражения перед ее генерацией (генерация добавляет /), и вам необходимо экранировать обратную косую черту:

var counter = 0;
var replace = "\\$" + counter;
var regex = new RegExp(replace);
console.log(regex);
0 голосов
/ 22 января 2019

/ в начале экранируется, потому что / символы должны быть экранированы в регулярных выражениях, ограниченных / (именно так консоль выражает ваше регулярное выражение при регистрации).

\ перед $ теряется, поскольку \ является escape-символом в строках JavaScript , а также в регулярных выражениях. Зарегистрируйте replace, чтобы увидеть, что \$ анализируется как $. Вам нужно экранировать саму \, если вы хотите, чтобы он выжил в регулярном выражении.

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