Выражение регулярного выражения с использованием $ {} - PullRequest
0 голосов
/ 11 апреля 2019

Я не могу заставить это регулярное выражение работать:

let varString = 'I am writing a ${varHere}';
let myKey = 'varHere';

pString = pString.replace(new RegExp(`\${${myKey}}`, 'g'), 'test');

Но это работает:

let varString = 'I am writing a ${varHere}';
let myKey = 'varHere';

pString = pString.replace(new RegExp(`{${myKey}}`, 'g'), 'test');
// pString = 'I am writing a $test';

Это проблема $.

1 Ответ

3 голосов
/ 11 апреля 2019

Вы неправильно интерполируете свою строку:

console.log(`\$\{${myKey}\}`);

даст вам ${varHere}. Помещая это в RegExp, он будет пытаться сопоставить $ (конец строки) несколько раз {varhere}, что, конечно, является недопустимым регулярным выражением. Вам нужно выйти из выражения, чтобы получить желаемый результат:

new RegExp(`\\\$\\\{${myKey}\\\}`, 'g')

Вместо этого, поскольку здесь вам на самом деле не нужен RegExp, вы также можете использовать более простую строку replace:

pString = varString.replace(`\$\{${myKey}\}`, 'test');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...