循环遍历javascript中的一组正则表达式

时间:2012-12-17 23:22:10

标签: javascript regex for-loop

我有一组正则表达式,存储在一个对象中,方式是

myRegexes = {};
myRegexes.reg1 = /[a-z]+[0-9]+/;
myRegexes.reg2 = /[a-e]+/;

然后我可以做 myRegexes.reg1.exec(sampleStr) 并且它完全正常。

但是,如果我遍历此对象并说

for( reg in myRegexes ){
    reg.exec(sampleStr);
}

我得到一个例外,说“TypeError:Object reg1没有方法'exec'”

我知道javascript对于for-for循环的方式很不满意,但是我不知道它是如何成功找到变量的,但是在这个过程中失去了它的方法。任何人都可以告诉我为什么会失败以及正确的做法是什么?

2 个答案:

答案 0 :(得分:6)

reg指的是属性名称,你必须抓住实际的正则表达式对象:

for( reg in myRegexes ) {
  myRegexes[ reg ].exec(sampleStr);
}

答案 1 :(得分:2)

for-in-loop枚举对象的属性,reg是属性名称(字符串)而不是属性值(正则表达式)。使用

for (reg in myRegexes)
    myRegexes[reg].exec(sampleStr);