Подстановка регулярных выражений '$ 1' - почему это строка? - PullRequest
0 голосов
/ 28 января 2019

Глупый вопрос, но я все равно задам его: почему подстановочная часть регулярного выражения в JavaScript заключена в кавычки в виде строки, где она кажется переменной сама по себе?например, '$ 2'

alert("banana split") // nana split
function reg(afilename)
{
    var rexp = new RegExp(/^(ba)(.+)/gim)
    var newName = afilename.replace(rexp, '$2')
    return newName
}

1 Ответ

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

Поскольку это , а не переменная [Javascript] сама по себе.

Если вы не заключите ее в одинарные кавычки, JavaScript попытается передать значение переменной $2 в качестве аргумента (да, вы можете дать имена переменных JavaScript, начинающиеся с $), за исключением того, что у вас их нет.

Таким образом, движок Regex получает фактическую буквальную строку $2,и дает ему свое особое значение.

Это прекрасный пример абстракции, где вы можете наблюдать два «слоя» взаимодействия программного обеспечения.Также рассмотрим document.write('<p>Text</p>'); - вы не хотите, чтобы JavaScript пытался проанализировать этот HTML, верно?Вы хотите передать его дословно объекту, который будет обрабатывать его.

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