0

我有一组存储在对象中的正则表达式,沿着

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 has no method 'exec'”

我知道 javascript 在 for-in 循环的执行方式上很不稳定,但我看不到它是如何成功找到变量的,但在此过程中会丢失它的方法。谁能告诉我为什么会失败以及正确的方法是什么?

4

2 回答 2

6

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

for( reg in myRegexes ) {
  myRegexes[ reg ].exec(sampleStr);
}
于 2012-12-17T23:23:39.357 回答
2

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

for (reg in myRegexes)
    myRegexes[reg].exec(sampleStr);
于 2012-12-17T23:24:11.827 回答