2015-02-24 47 views
0

我試圖找出如何做對即忽略大小寫字符串正則表達式搜索,但是當它的替代品,應該保留原來如此。的JavaScript/jQuery的情況下無動於衷正則表達式替換

搜索「副」應與「進階」,但更換應符合「進階」不「副」

目的是在一個字符串「亮點」的文字。顯然,如果有更容易的事情,我就會全神貫注。

當前代碼...

$("#SearchResults").append(appendString.replace(
    new RegExp($("#SearchInput").val(), "g"), "<strong>" + 
    $("#SearchInput").val() + "</strong>") 
); 
+4

嘗試'.replace(新的RegExp( '(' + $( 「#SearchInput」)。VAL()+ ')', 「GI」), 「$ 1」)' – 2015-02-24 21:12:56

+0

@卡爾 - AndréGagnon你能請發佈完整答案?這很好用! – Jared 2015-02-24 22:05:37

回答

1

您需要用圓括號封裝值,這將創建一個組,您將能夠在替換字符串中獲得該組,$n其中n是該組的編號。該指數開始1

所以使用:

appendString.replace(new RegExp('(' + $("#SearchInput").val() + ')', "gi"), "<strong>$1</strong>"); 

注意,使用正則表達式這樣是很危險的,舉例來說,如果我在輸入寫(hello,它會拋出一個錯誤:無效的正則表達式。

0

卡爾的做法是正確的,雖然你可能還需要特殊字符轉義:

var value = $("#SearchInput").val(); 
var escaped = value.replace(/([\[\]\(\)\/\.\*\+])/g, "\\$1"); 

// Regex: new RegExp(escaped, "gi"); 
// Replace with: "<strong>" + value + "</strong>"); 

編輯的錯字。