Javascript 如何将循环变量传递到正则表达式中? var sourceArray=“un deux deux”; 变量termArray=[“un”,“deux”]; var=0; 对于(变量i=0;i

Javascript 如何将循环变量传递到正则表达式中? var sourceArray=“un deux deux”; 变量termArray=[“un”,“deux”]; var=0; 对于(变量i=0;i,javascript,Javascript,在上面的代码中,我尝试让termArray[I]从termArray中呈现相应的字符串值。但是,这些代码不起作用。如何格式化匹配括号中的termArray[i],以便在循环时将其替换为字符串值 另外,我应该将[I]放在document.write行的何处,以使其正确循环。 请尽量不要对代码进行太多更改,即使它不是“最佳的”。您可以尝试使用RegEx功能: var sourceArray = "un un un deux deux"; var termArray = ["un", "deux"];

在上面的代码中,我尝试让termArray[I]从termArray中呈现相应的字符串值。但是,这些代码不起作用。如何格式化匹配括号中的termArray[i],以便在循环时将其替换为字符串值

另外,我应该将[I]放在document.write行的何处,以使其正确循环。
请尽量不要对代码进行太多更改,即使它不是“最佳的”。

您可以尝试使用
RegEx
功能:

var sourceArray = "un un un deux deux";
var termArray = ["un", "deux"];
var found = 0;

for (var i =0; i < termArray.length; i++) {
        found = sourceArray.match(/termArray[i]/g);
        document.write(found.length);
    }
for(变量i=0;i<10;i++){
var exp=新正则表达式('/'+i+'/');
exp.test('Hello');
}

您可以尝试使用
RegEx
功能:

var sourceArray = "un un un deux deux";
var termArray = ["un", "deux"];
var found = 0;

for (var i =0; i < termArray.length; i++) {
        found = sourceArray.match(/termArray[i]/g);
        document.write(found.length);
    }
for(变量i=0;i<10;i++){
var exp=新正则表达式('/'+i+'/');
exp.test('Hello');
}

如果要使用字符串构建正则表达式,则需要使用RegExp构造函数而不是RegExp文本:

for (var i = 0; i < 10; i++) {
    var exp = new RegEx('/' + i + '/');
    exp.test('Hello');
}
var sourceArray=“un deux deux”;
变量termArray=[“un”,“deux”];
var=0;
对于(变量i=0;i

如果要使用字符串构建正则表达式,则需要使用RegExp构造函数而不是RegExp文本:

for (var i = 0; i < 10; i++) {
    var exp = new RegEx('/' + i + '/');
    exp.test('Hello');
}
var sourceArray=“un deux deux”;
变量termArray=[“un”,“deux”];
var=0;
对于(变量i=0;i

尝试创建
RegExp
对象,而不是使用regex内联:

var sourceArray = "un un un deux deux";
var termArray = ["un", "deux"];
var found = 0;

for (var i =0; i < termArray.length; i++) {
    found = sourceArray.match(new RegExp(termArray[i], 'g'));
    document.write(found.length);
}
for(变量i=0;i
尝试创建
RegExp
对象,而不是使用regex内联:

var sourceArray = "un un un deux deux";
var termArray = ["un", "deux"];
var found = 0;

for (var i =0; i < termArray.length; i++) {
    found = sourceArray.match(new RegExp(termArray[i], 'g'));
    document.write(found.length);
}
for(变量i=0;i
var sourceArray=“un-deux-deux”;
变量termArray=[“un”,“deux”];
var=0;
对于(变量i=0,n=termArray.length;i

  • termArray.length
    移动到变量
    n
    中,以便通过缓存进行优化

  • 您可以将两个参数传递给
    match()
    ,第一个是值,第二个是修饰符;应该从内部生成一个regexp对象

  • 为未找到匹配项时的条件添加了一个
    | |[]
    ,以便
    找到。length
    将返回
    0
    且不会中断

  • var sourceArray=“un deux deux”;
    变量termArray=[“un”,“deux”];
    var=0;
    对于(变量i=0,n=termArray.length;i

  • termArray.length
    移动到变量
    n
    中,以便通过缓存进行优化

  • 您可以将两个参数传递给
    match()
    ,第一个是值,第二个是修饰符;应该从内部生成一个regexp对象

  • 为未找到匹配项时的条件添加了一个
    | |[]
    ,以便
    找到。length
    将返回
    0
    且不会中断


  • 这应该在最小的更改下工作:

    var sourceArray = "un un un deux deux";
    var termArray   = ["un", "deux"];
    var found       = 0;
    
    for (var i=0,n=termArray.length; i < n; i++) {
       found = sourceArray.match( termArray[i], "g" ) || [];
       document.write(found.length);
    }
    

    这应该在最小的更改下工作:

    var sourceArray = "un un un deux deux";
    var termArray   = ["un", "deux"];
    var found       = 0;
    
    for (var i=0,n=termArray.length; i < n; i++) {
       found = sourceArray.match( termArray[i], "g" ) || [];
       document.write(found.length);
    }
    

    Aaa所以这是关于使用构造函数而不是文本。谢谢你的回答和所有已经回答的人。我很惊讶文件。写(发现。长度);在不指定[i]的情况下正确迭代。这是为什么?@Benj您在每次迭代中都会替换
    found
    的值,因此它只包含当前迭代的值,而没有关于其他迭代的信息。嗯,当用^和$补充regexp以查找精确字符串时:例如在find=sourceArray.match中(新的regexp('\^'+termArray[i]+'\$,'g');我认为这是正确的语法,它返回“uncaughttypeerror:cannotreadproperty'length'of null”。有什么线索吗?Tks@Benj这是在没有匹配项时尝试访问
    found.length
    时的预期行为。如果删除RegExp中的
    \`s并设置
    sourceArray=“un”`您将看到它在抛出异常之前编写了一个
    1
    。要防止异常,您可以使用
    |124;[]执行
    vol7ron
    所做的操作if(found){document.write(found.length);}
    Aaa,这是关于使用构造函数而不是文本。谢谢你的回答和所有已经回答的人。我很惊讶文件。写(发现。长度);在不指定[i]的情况下正确迭代。这是为什么?@Benj您在每次迭代中都会替换
    found
    的值,因此它只包含当前迭代的值,而没有关于其他迭代的信息。嗯,当用^和$补充regexp以查找精确字符串时:例如在find=sourceArray.match中(新的regexp('\^'+termArray[i]+'\$,'g');我认为这是正确的语法,它返回“uncaughttypeerror:cannotreadproperty'length'of null”。有什么线索吗?Tks@Benj这是在没有匹配项时尝试访问
    found.length
    时的预期行为。如果删除RegExp中的
    \`s并设置
    sourceArray=“un”`您将看到它在抛出异常之前编写了一个
    1
    。要防止异常,您可以使用
    |124;[]执行
    vol7ron
    所做的操作或者你可以