代码之家  ›  专栏  ›  技术社区  ›  Ian Vink

带变量的javascript正则表达式?

  •  2
  • Ian Vink  · 技术社区  · 14 年前

    我试图执行一个以变量作为查询的正则表达式。

    //This works
    $('body *').replaceText(/\b(Toronto)/gi, nameWrapper );
    

    我需要一个变量中有“多伦多”

    var query = "Toronto";
    $('body *').replaceText(/\b( --  query VARIABLE HERE --  )/gi, nameWrapper );
    
    2 回复  |  直到 14 年前
        1
  •  8
  •   Gumbo    14 年前

    你需要使用 RegExp 要从字符串生成正则表达式,请执行以下操作:

    var query = "Toronto";
    $('body *').replaceText(RegExp("\\b(" + query + ")", "gi"), nameWrapper);
    

    要正确引用字符串,可以使用以下命令:

    RegExp.quote = function(str) {
        return str.replace(/(?=[\\^$*+?.()|{}[\]])/g, "\\");
    }
    

    那就用 RegExp.quote(query) 而不是 query 生成正则表达式时:

    var query = "Toronto";
    $('body *').replaceText(RegExp("\\b(" + RegExp.quote(query) + ")", "gi"), nameWrapper);
    
        2
  •  2
  •   Darin Dimitrov    14 年前

    像这样试试:

    var query = 'Toronto';
    var regex = new RegExp('\\b(' + query + ')', 'gi');
    $('body *').replaceText(regex, nameWrapper);