我有一组正则表达式,存储在一个对象中,方式是
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循环的方式很不满意,但是我不知道它是如何成功找到变量的,但是在这个过程中失去了它的方法。任何人都可以告诉我为什么会失败以及正确的做法是什么?
答案 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);