使Javascript正则表达式大小写不敏感
问题描述:
我正在使用jquery函数,我发现在div中找到单词并突出显示它们。我将它与搜索工具一起使用,因此案例并不总是完全匹配单词。我怎样才能转换这使它不区分大小写?使Javascript正则表达式大小写不敏感
$.fn.highlight = function(what,spanClass) {
return this.each(function(){
var container = this,
content = container.innerHTML,
pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)','g'),
replaceWith = '$1<span ' + (spanClass ? 'class="' + spanClass + '"' : '') + '">$2</span>$3',
highlighted = content.replace(pattern,replaceWith);
container.innerHTML = highlighted;
});
}
答
只需添加 'i' 标志。
pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)','gi')
答
$.fn.highlight = function(what,spanClass) {
return this.each(function(){
var container = this,
content = container.innerHTML,
pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)','gi'),
replaceWith = '$1<span ' + (spanClass ? 'class="' + spanClass + '"' : '') + '">$2</span>$3',
highlighted = content.replace(pattern,replaceWith);
container.innerHTML = highlighted;
});
}
答
,只需加上 “我”:
pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)','gi'),
从MDN:
正则表达式有四个可选的标志,使全球和 情况不敏感的搜索。要指示全局搜索,请使用g 标志。要指示不区分大小写的搜索,请使用i标志。以 表示多行搜索,使用m标志。要执行“粘性” 搜索,该搜索匹配从目标 字符串中的当前位置开始,使用y标志。这些标志可以以任何顺序单独使用或一起使用,并作为正则表达式的一部分包含在内。