JavaScript/jQuery 不区分大小写的 RegEx 替换
JavaScript/jQuery case indifferent RegEx replace
我正在尝试找出如何对忽略大小写的字符串进行 RegEx 搜索,但是当它进行替换时,它应该保留原始大小写。
即
搜索 "adv" 应匹配 "Adv",但替换应匹配 "Adv" 而不是 "adv"
目的是'highlight'字符串中的文本。显然,如果有更简单的事情,我会洗耳恭听。
当前代码...
$("#SearchResults").append(appendString.replace(
new RegExp($("#SearchInput").val(), "g"), "<strong>" +
$("#SearchInput").val() + "</strong>")
);
Karl 的方法是正确的,尽管您可能还需要转义特殊字符:
var value = $("#SearchInput").val();
var escaped = value.replace(/([\[\]\(\)\/\.\*\+])/g, "\");
// Regex: new RegExp(escaped, "gi");
// Replace with: "<strong>" + value + "</strong>");
编辑打字错误。
您需要用括号封装值,这将创建一个组,您将能够使用 $n
在替换字符串中获取该组,其中 n
是组的编号.索引从 1 开始。
所以使用那个:
appendString.replace(new RegExp('(' + $("#SearchInput").val() + ')', "gi"), "<strong></strong>");
请注意,这样使用正则表达式很危险,例如,如果我在输入中写入 (hello
,它会抛出错误:无效的正则表达式。
我正在尝试找出如何对忽略大小写的字符串进行 RegEx 搜索,但是当它进行替换时,它应该保留原始大小写。
即
搜索 "adv" 应匹配 "Adv",但替换应匹配 "Adv" 而不是 "adv"
目的是'highlight'字符串中的文本。显然,如果有更简单的事情,我会洗耳恭听。
当前代码...
$("#SearchResults").append(appendString.replace(
new RegExp($("#SearchInput").val(), "g"), "<strong>" +
$("#SearchInput").val() + "</strong>")
);
Karl 的方法是正确的,尽管您可能还需要转义特殊字符:
var value = $("#SearchInput").val();
var escaped = value.replace(/([\[\]\(\)\/\.\*\+])/g, "\");
// Regex: new RegExp(escaped, "gi");
// Replace with: "<strong>" + value + "</strong>");
编辑打字错误。
您需要用括号封装值,这将创建一个组,您将能够使用 $n
在替换字符串中获取该组,其中 n
是组的编号.索引从 1 开始。
所以使用那个:
appendString.replace(new RegExp('(' + $("#SearchInput").val() + ')', "gi"), "<strong></strong>");
请注意,这样使用正则表达式很危险,例如,如果我在输入中写入 (hello
,它会抛出错误:无效的正则表达式。