2012-03-23 107 views
3

我正在使用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; 
    }); 
} 

回答

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

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

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

,只需加上 “我”:

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

MDN

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