的尊重套管我想要的s
大胆值之内的query
值不区分大小写匹配的部分。不区分大小写的匹配和替换,而源字符串
如果我发现query
内s
我不能简单地做:
var s="New York";
var query="new";
var result = s.replace(/query/i,'<strong>' + query + '</strong>';
从那时起,它还将与query
的外壳,这是我不想更换外壳的s
。我想保持壳体在s中。
结果将是:“新纽约”
的尊重套管我想要的s
大胆值之内的query
值不区分大小写匹配的部分。不区分大小写的匹配和替换,而源字符串
如果我发现query
内s
我不能简单地做:
var s="New York";
var query="new";
var result = s.replace(/query/i,'<strong>' + query + '</strong>';
从那时起,它还将与query
的外壳,这是我不想更换外壳的s
。我想保持壳体在s中。
结果将是:“新纽约”
如果你把它捕获组(用括号周围),那么你可以使用占位符$1
:
var s="New York";
var result = s.replace(/(new)/i,'<strong>$1</strong>');
// result = <strong>New</strong> York
看到活生生的例子:http://jsfiddle.net/2zau4/
正如在评论中指出 - 有什么东西whic h I类从来不知道 - 是你不真正需要捕获组为JavaScript使用字符$&
表示“整场比赛。”所以,你也可以这样做:
var s="New York";
var result = s.replace(/new/i,'<strong>$&</strong>');
// result = <strong>New</strong> York
最后一点我想你知道,你原来的语法将不起作用:
var s="New York";
var query="new";
var result = s.replace(/query/i,'<strong>' + query + '</strong>';
-----------------------^
This is searching for literal "query" not
the variable query (containing the string "new")
正确的语法必须从字符串创建RegExp
与 “我” 标志:
var s="New York";
var query="new";
var result = s.replace(new RegExp(query,'i'),'<strong>$&</strong>');
var s="New York";
var query="new";
var result = s.replace(new RegExp(query,"i"),function(match){
return "<strong>" + match + "</strong>";
});
不需要组,只需使用'$&'。 – georg
@ thg435 - 这很酷。每天学些新东西。 – Jamiec
@Jamiec如果正则表达式的标准存储在一个变种,将OP需要使用'新的RegExp()'? –