的尊重套管我想要的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()'? –