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