Javascript 带标记的不区分大小写的换行子字符串 var searchText=“你好世界”; var searchTextRegExp=new RegExp(searchText,“i”);//不区分大小写的regexp var text=“blahblah Hello Worldz”; text.replace(searchTextRegExp,“+searchText+”);

Javascript 带标记的不区分大小写的换行子字符串 var searchText=“你好世界”; var searchTextRegExp=new RegExp(searchText,“i”);//不区分大小写的regexp var text=“blahblah Hello Worldz”; text.replace(searchTextRegExp,“+searchText+”);,javascript,regex,Javascript,Regex,我正在努力改进这段代码。目前,它降低了helloworld的大小写,因为它使用searchText作为替换值 我希望在保持不区分大小写的搜索的同时,只使用标记包装Hello World,而不修改其大小写 做这件事的好方法是什么?我相信string.indexOf是区分大小写的,这让事情变得更复杂了?在替换文本中,您可以使用$&引用任何与regexp匹配的内容 var searchText = "hello world"; var searchTextRegExp = new RegExp(sea

我正在努力改进这段代码。目前,它降低了helloworld的大小写,因为它使用searchText作为替换值

我希望在保持不区分大小写的搜索的同时,只使用标记包装Hello World,而不修改其大小写


做这件事的好方法是什么?我相信string.indexOf是区分大小写的,这让事情变得更复杂了?

在替换文本中,您可以使用
$&
引用任何与regexp匹配的内容

var searchText = "hello world";
var searchTextRegExp = new RegExp(searchText , "i"); //  case insensitive regexp
var text = "blahblah Hello Worldz";

text.replace(searchTextRegExp , '<match>' + searchText + '</match>');
text=text.replace(searchTextRegExp,$&');
您还可以使用
$1
$2
等来引用regexp中捕获组的匹配项。

可以包含模式,尤其是
$&

var searchText = "hello world";
var searchTextRegExp = new RegExp(searchText , "i"); //  case insensitive regexp
var text = "blahblah Hello Worldz";

text.replace(searchTextRegExp , '<match>' + searchText + '</match>');
$&

插入匹配的子字符串

所以你可以说:

text = text.replace(searchTextRegExp , '<match>$&</match>');
text.replace(searchTextRegExp,$&')。

要使用在
text

中找到的确切字符串,可以使用
indexOf
而不使用正则表达式。那么:

text.replace(searchTextRegExp , '<match>$&</match>').
var index=text.toLowerCase().indexOf(searchText);
如果(索引!=-1){
text=text.子字符串(0,索引-1)+
"" + 
text.substr(索引,searchText.length)+
"" + 
text.substring(index+searchText.length);
}