当我使用var j= new RegExp('('+val+')','gi')
时,$1
工作正常。但是当我在没有支架的情况下使用它时它就不起作用了。所以我想知道为什么括号是必要的,$1
是否保持必须替换的值?
var val='city'
var j= new RegExp('('+val+')','gi')
console.log(j)
$('div').html(function(i,val){
return val.replace(j,'<span>$1</span>')
})
答案 0 :(得分:5)
$n
将替换为与正则表达式中n
捕获组匹配的字符串部分。捕获组是括号中正则表达式的一部分。如果您没有任何括号,则没有捕获组,因此$1
不会被任何替换。
如果您希望匹配整个正则表达式,请使用$&
。
答案 1 :(得分:1)
括号中,您的意思是paranthesis吗?
如果是这样,paranthesis表示正则表达式中的capture group,这意味着内部的内容被捕获。
如果您在访问捕获的群组时需要帮助,可以查看this answer,这可以解释得非常彻底。
答案 2 :(得分:0)
括号用于在正则表达式中形成捕获组。在此处查看更多详细信息:http://www.regular-expressions.info/refcapture.html
请注意,为了匹配括号,您必须将它们转义。