0

のスタイルに沿って、オブジェクトに格納された正規表現のセットがあります

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

私はそれを行うことができ、それは myRegexes.reg1.exec(sampleStr) 完全にうまく機能します。

ただし、このオブジェクトをループして言うと

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

「TypeError: オブジェクト reg1 にはメソッド '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-loopregは、プロパティ値 (正規表現) ではなく、プロパティ名 (文字列)であるオブジェクトのプロパティを列挙します。使用する

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