使JavaScript正则表达式不区分大小写

5

我正在使用一个我找到的jquery函数来查找

中的单词并将其突出显示。 我同时还使用这个函数与搜索工具一起使用,因此单词的大小写不总是匹配的。如何将其转换为不区分大小写?

$.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;
    });
}
4个回答

23

0

只需添加'i'标志即可。

pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)','gi')

0
$.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;
});

}


0

只需添加“i”:

pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)','gi'),

来自MDN

正则表达式有四个可选标志,允许进行全局和不区分大小写的搜索。要表示全局搜索,请使用 g 标志。要表示不区分大小写的搜索,请使用 i 标志。要表示多行搜索,请使用 m 标志。要执行“粘性”搜索,即从目标字符串中的当前位置开始匹配,请使用 y 标志。这些标志可以单独或一起使用,并以任何顺序包含在正则表达式中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接