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

时间:2012-03-23 02:36:23

标签: javascript jquery regex

我正在使用一个jquery函数,我发现在div中找到单词并突出显示它们。我正在使用它和搜索工具,因此案例并不总是与单词完全匹配。如何将其转换为不区分大小写?

$.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 个答案:

答案 0 :(得分:17)

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

add the 'i' flag使其不区分大小写

答案 1 :(得分:0)

只需添加'i'标志。

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

答案 2 :(得分: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;
});

}

答案 3 :(得分:0)

只需添加“i”:

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

来自MDN

  

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