Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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中的字符串-保持区分大小写_Javascript_Jquery - Fatal编程技术网

替换/突出显示JavaScript中的字符串-保持区分大小写

替换/突出显示JavaScript中的字符串-保持区分大小写,javascript,jquery,Javascript,Jquery,我想突出显示句子中的一个字符串。替换应使用不区分大小写的字符(如句子My foo bar中的字符串foo) 这对我来说没问题: var regEx = new RegExp(this._searchString, "gi"); var label = $(item).text(); label = label.replace(regEx, '<span style="font-weight:bold;">' + this._searchString + '</span>'

我想突出显示句子中的一个字符串。替换应使用不区分大小写的字符(如句子
My foo bar
中的字符串
foo

这对我来说没问题:

var regEx = new RegExp(this._searchString, "gi");
var label = $(item).text();
label = label.replace(regEx, '<span style="font-weight:bold;">' + this._searchString + '</span>');
$(item).html(label);
var regEx=new RegExp(this.\u searchString,“gi”);
变量标签=$(项).text();
label=label.replace(regEx,“+this.\u searchString+”);
$(项目).html(标签);
这里的问题是: 如果我在
My foo bar
中搜索并替换
foo
,结果将是
我的食物条
,但我想要的是
我的食物条


因此,搜索应该忽略区分大小写,而不是替换。知道怎么做吗?我看到的唯一方法是首先检查字符串是否包含搜索的字符串,提取它(区分大小写),修改它并将其放回字符串中。但这对我来说似乎太多了,不是吗?

你必须在一个组中捕获字符串,方法是将它用括号括起来,并在替换字符串中引用
$1

编辑:我用
\b
包装了匹配模式,以便只匹配整个单词。
var original_string='My Foo bar',
变量='foo',
regex=newregexp('(\\b'+变量+'\\b''gi');//注意变量周围的括号
log(原始字符串.replace(regex,'precious$1 is really');//在这里,您使用以下方法使用$1引用第一次捕获:

str=$(“#测试”).text()
var regEx=新的RegExp(“foo”、“gi”);
str=str.replace(正则表达式,函数(a,b){
控制台日志(a)
返回“+a+”
})
$(“#测试”).html(str)


带Foos和Foo的My Foo bar
如何在正则表达式中传递javascript变量?我尝试了
”/(“+variable+”)/gi'
,但它不起作用。这是因为您通过将正则表达式用引号括起来而将其转换为字符串。使用
RegExp
构造函数<代码>变量reg=RegExp(“(“+变量+”)”,“gi”)