Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将动态不敏感字符串包装到span标记中_Javascript_Regex_String - Fatal编程技术网

Javascript 将动态不敏感字符串包装到span标记中

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作为文本

我试图将动态不敏感字符串包装在span标记中,但$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:很高兴它为您工作。请考虑接受/赞成这个答案。