一个愚蠢的问题,但无论如何我都会问:为什么JavaScript中正则表达式的替换部分包含在引号中作为字符串,而字符串本身似乎是一个变量?例如“ $ 2”
alert("banana split") // nana split
function reg(afilename)
{
var rexp = new RegExp(/^(ba)(.+)/gim)
var newName = afilename.replace(rexp, '$2')
return newName
}
答案 0 :(得分:3)
因为它本身不是 [Javascript]变量。
如果未将单引号引起来,则JavaScript会尝试将变量$2
的值作为参数传递(是的,您可以给JavaScript变量名称以$
开头),但你没有一个。
通过这种方式,Regex引擎获取实际的文字字符串$2
,并赋予其自己的特殊含义。
这是抽象的完美示例,您可以在其中见证软件交互的两个“层”。还考虑document.write('<p>Text</p>');
-您不希望JavaScript尝试解析该HTML,对吧?您希望将其逐字传递给将要处理它的实体。