javascript - 在 span 标签中包装动态不敏感字符串

标签 javascript regex string

我正在尝试将动态不敏感字符串包装在 span 标记中,但输出中出现了 $1。请帮助我。

     function focusSearchValue(data, value){
        		var regEx = new RegExp((value), "ig");
    			data = data.replace(regEx, "<span class=''>$1</span>"); 
                console.log(data);
       }
    
    focusSearchValue('SharePoint 2016, Team Collaboration Software Tools', 'sharepoint');

最佳答案

value 周围的括号不是模式的一部分,因此,您的正则表达式没有定义捕获组,$1 可以从字符串替换模式中引用。这就是为什么 $1 作为替换结果作为文字字符串传递的原因。

您需要使用 $& 来引用整个匹配项(参见 String#replace "Specifying a string as a parameter" section ),并返回字符串:

function focusSearchValue(data, value){
        var regEx = new RegExp(value.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), "ig");
        return data.replace(regEx, "<span class=''>$&</span>");
}

console.log(focusSearchValue('SharePoint 2016, Team Collaboration Software Tools', 'sharepoint'));

由于您将一个变量传递给应该被解析为文字字符串的正则表达式引擎,因此建议转义所有可能充当特殊正则表达式元字符的特殊字符,因此添加了转义 .replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&').

关于javascript - 在 span 标签中包装动态不敏感字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45933714/

相关文章:

javascript - Jasmine 中 "toNotEqual"的替代方案是什么?

javascript - 以excel格式导出时如何在ajax中指定文件名

javascript - ruby rails : "couldn' t find file 'jquery.ui.datepicker' "

Java - 如何测试一个字符串是否同时包含字母和数字

python - 如何对字符串数组执行 bincount?

javascript - 混合 Javascript 和 Razor 代码

php - preg_replace 和中文字符的奇怪问题

javascript - 使用 js 实现 float 和 int Bangla Numbers 的正则表达式

java - 在java中我如何删除元音是 'a'、 'e'、 'i'、 'o'和'u

C++ UTF-8 实际字符串长度