私はregexを使用してリンクテキストを取得しようとしています。パターンにマッチする可能性のあるリンクがいくつかありますが、私は4番まで最も遠くに行きたいと思っています。私のJSコードは次のとおりです:JavaScriptの正規表現 - exec無限ループ
パターンは存在しますが、このコードはIE上で無限ループになります(FFでもうまくいきます)。どんな助けもありがとうございます。
私はregexを使用してリンクテキストを取得しようとしています。パターンにマッチする可能性のあるリンクがいくつかありますが、私は4番まで最も遠くに行きたいと思っています。私のJSコードは次のとおりです:JavaScriptの正規表現 - exec無限ループ
パターンは存在しますが、このコードはIE上で無限ループになります(FFでもうまくいきます)。どんな助けもありがとうございます。
RegExp.exec
は、私は信じて、lastIndex
性質を利用し、継続的に可能な「グローバルグループの取り込み」のようなものを作ってそれを修正します。それが機能するためには、単一の正規表現が必要です。現在、それは動作しませんので、あなたはすべての反復で新しいものを作成している...
はこのお試しください:
var level = 1;
var pattern = /<a href="http:\/\/www.mysite.com\/x\/(?:.*)>(.*)<\/a>/img;
var _match;
while (_match = pattern.exec(_html)){
if (level < 5) (_anchor_text=_match[1]);
level ++;
}
実際には同じのRegExpオブジェクトので、FF3.6まで働くために使用されるこのコードをすべての繰り返しで再利用されています(ES3に準拠)。しかし、ES3はES5に置き換えられ、RegExpリテラルの処理方法が変更されました。「正規表現リテラルは、リテラルが評価されるたびに一意のオブジェクトを返すようになりました。効果的に 'g'フラグをあなたの場合に無駄にする。 http://es5.github.com/#E再び、IEはその時代に先んじていた。 – Robert