次のコードの結果は:奇妙な正規表現の問題
var a = /cat/g;
var l = "A test sentence containing cat and dog.";
var r = a.exec(l);
document.write(r.lastIndex);
しかし、それはr.index(およびr.input)のために完璧に動作します。
私はFirefoxを使用しています。誰かが手掛かりを持っていますか?
編集:OK、上記のコードはIEで完全に機能します。さらに、Firefoxでは、5行目のr.lastIndexを呼び出す代わりに、a.lastIndexが呼び出されると完全に機能します。 Firefoxは結果にlastIndexプロパティを返しません。むしろexec()を呼び出すパターンのプロパティを設定します。興味深いことに、IEは両方を設定します。
lastIndexのものexec(によって返される結果のプロパティ)だけでなく、パターンの呼び出しのプロパティですexec() –
@Crimson:いいえ、 'lastIndex'は' exec'の戻り値のプロパティではありません。 'r.hasOwnProperty(" lastIndex ")'は* false *を返します。 https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp/exec#Descriptionも参照してください。 – Gumbo