Javascript 将动态不敏感字符串包装到span标记中
我试图将动态不敏感字符串包装在span标记中,但$1将进入输出。请帮帮我Javascript 将动态不敏感字符串包装到span标记中,javascript,regex,string,Javascript,Regex,String,我试图将动态不敏感字符串包装在span标记中,但$1将进入输出。请帮帮我 函数焦点搜索值(数据、值){ var regEx=新的RegExp((值),“ig”); data=data.replace(regEx,“$1”); 控制台日志(数据); } focusSearchValue(“SharePoint 2016,团队协作软件工具”,“SharePoint”)value周围的括号不是模式的一部分,因此,您的正则表达式没有定义捕获组,$1可以从字符串替换模式中引用。这就是为什么将$1作为文本
函数焦点搜索值(数据、值){
var regEx=新的RegExp((值),“ig”);
data=data.replace(regEx,“$1”);
控制台日志(数据);
}
focusSearchValue(“SharePoint 2016,团队协作软件工具”,“SharePoint”)
value周围的括号不是模式的一部分,因此,您的正则表达式没有定义捕获组,$1
可以从字符串替换模式中引用。这就是为什么将$1
作为文本字符串作为替换结果传递的原因
您需要使用$&
引用整个匹配(请参阅),并返回字符串:
函数焦点搜索值(数据、值){
var regEx=new RegExp(value.replace(/[-\/\\^$*+.()[\]{}]/g,'\\$&'),“ig”);
返回数据。替换(regEx,“$&”);
}
console.log(focusSearchValue(“SharePoint 2016,团队协作软件工具”,“SharePoint”)
我发现这种语法更直观一些,将函数作为replace
的第二个参数传入(更多信息:,):
const-reEscape=searchTerm=>(
替换(/[-{}()[/*+?.^$\\]\\]/g,“\\$&”)
);
常量addSpan=$1=>`${$1}`;
常量焦点搜索值=(数据,值)=>{
const regex=new RegExp(`${reEscape(value)}`,'ig');
返回数据。替换(regex,addSpan);
};
console.log(focusSearchValue(“SharePoint 2016,团队协作软件工具”,“SharePoint”)代码>非常感谢,它成功了。在这里,您将值存储在$&?是正则表达式引擎将整个匹配存储在组0中,可以使用$&
替换反向引用来访问该值。@InderjeetSinghAhuja:很高兴它为您工作。请考虑接受/赞成这个答案。