Próbuję uzyskać tekst łącza za pomocą wyrażeń regularnych. jest prawdopodobnie kilka linków, które mogą pasować do wzorca i chcę dostać najdalszy do czwartego. Oto mój kod JS:JavaScript wyrażeń regularnych - exec nieskończona pętla
var level=1;
while (_match = /<a href="http:\/\/www.mysite.com\/x\/(?:.*)>(.*)<\/a>/img.exec(_html)){
if (level < 5) (_anchor_text=_match[1]);
level ++;
}
Problemem jest to, że ten kod wprowadza nieskończoną pętlę w IE (dobrze działa na FF), chociaż istnieje wzorzec. Każda pomoc jest doceniana.
Kod ten rzeczywiście pracował do FF3.6, ponieważ tego samego obiektu RegExp został ponownie użyty w każdej iteracji (zgodnie z ES3). Ale ES3 zostało zastąpione przez ES5, które zmieniło sposób, w jaki obsługiwane są literały RegExp: "Regularne wyrażenia ekspresji zwracają teraz unikalny obiekt za każdym razem, gdy literał jest oceniany." Skuteczne renderowanie flagi 'g' bezużytecznej w twoim przypadku. http://es5.github.com/#E Znowu IE wyprzedziło swój czas. – Robert