Javascript RegExp:使用变量创建正则表达式

时间:2011-10-19 23:40:20

标签: javascript jquery regex

  

可能重复:
  Javascript Regexp dynamic generation?

我正在尝试使用变量创建一个新的RegExp;但是,我不知道sytax这样做。任何帮助都会很棒!

我需要更改此内容:(v.name.search(新RegExp(/ Josh Gonzalez / i))!= -1)将其更改为:(v.name .search(new RegExp(/ q / i))!= -1)。我基本上需要用变量替换“josh”q~var q = $('input [name =“q”]')。val();

感谢您的帮助

$( 'form#search-connections' )
    .submit( function( event )
    {
        event.preventDefault();
        var q = $( 'input[name="q"]' ).val();

        console.log( _json );

        $.each( _json, function(i, v) {

        //NEED TO INSERT Q FOR JOSH 

            if (v.name.search(new RegExp(/Josh Gonzalez/i)) != -1) {

                alert(v.name);
                return;
            }
        });         
    }
);

2 个答案:

答案 0 :(得分:8)

像这样:

new RegExp(q + " Gonzalez", "i");

使用/字符是如何使用RegExp文字语法定义RegExp的。要从字符串创建RegExp,请将该字符串传递给RegExp构造函数。这些是等价的:

var expr = /Josh Gonzalez/i;
var expr = new RegExp("Josh Gonzalez", "i");

你拥有它的方式是将正则表达式传递给正则表达式构造函数......这是多余的。

答案 1 :(得分:1)

您只需要使用字符串添加构建所需的字符串,并将其传递给RegExp构造函数,如下所示:

var q = $( 'input[name="q"]' ).val();
var re = new RegExp(q + " Gonzalez", "i");
if (v.name.search(re) != -1) {
    // do your stuff here
}