2015-02-24 55 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>"); 

编辑的错字。