endlosschleife nach exec() ?
susi
- javascript
hallo,
ich habe folgenden string!
<script>alert('hallo');</script>
<script>alert('was?');</script>
<script type="text/javascript"src="test.js"/>
und nun will ich die extern geladenen *.js files extrahieren!
dies mit:
var regEx= /<script\s.*src=.*/>/;
while (result= regEx.exec(string))
{
document.write(result[0]);
}
die regEx funktioniert beim onlinetester wunderbar!
ein array mit einem eintrag wird per php z.b zurück gegeben!
jedoch ...
mit dem oben angegebenen string bekomm ich in Js immer eine endlosschleife! als output kommt immer result[0]= <script type="text/javascript"src="test.js"/>
ein resultat, das richtige noch dazu und dennoch läuft while in einer endlosschleife, warum?
lf, susi
Ni hao!
var regEx= /<script\s.*src=.*/>/;
while (result= regEx.exec(string))
{
document.write(result[0]);
}jedoch ...
mit dem oben angegebenen string bekomm ich in Js immer eine endlosschleife! als output kommt immer result[0]= <script type="text/javascript"src="test.js"/>
ein resultat, das richtige noch dazu und dennoch läuft while in einer endlosschleife, warum?
Ich kenne mich mit Regex in Javascript nicht wirklich aus, aber es sieht so aus, als ob Du immer wieder den selben Teilstring findest - was auch logisch erscheint, wenn Du immer wieder mit demselben Regex im selben String suchst.
Vermutlich möchtest Du die Suche (also das exec) nur einmal aufrufen und danach die Schleife über die Ergebnisse laufen lassen (sprich: über die Indices des Arrays result).
Viele Grüße vom Længlich
Ich kenne mich mit Regex in Javascript nicht wirklich aus, aber es sieht so aus, als ob Du immer wieder den selben Teilstring findest - was auch logisch erscheint, wenn Du immer wieder mit demselben Regex im selben String suchst.
Vermutlich möchtest Du die Suche (also das exec) nur einmal aufrufen und danach die Schleife über die Ergebnisse laufen lassen (sprich: über die Indices des Arrays result).
weil match ein object zurück gibt und kein wirkliches array!
die anwendung mit while ist so laut selfhtml.
ein anderes beispiel funktioniert!
Aloha!
die anwendung mit while ist so laut selfhtml.
ein anderes beispiel funktioniert!
Sorry, hast recht. Ich sollte kein Halbwissen posten. ;-) Du meinst bestimmt diese Seite:
http://de.selfhtml.org/javascript/objekte/regexp.htm#exec
Unter den Erläuterungen steht aber auch folgendes:
"Zunächst wird ein regulärer Ausdruck mit dem Zusatz /.../gi definiert. Die Angabe g stellt sicher, dass exec() mehrmals auf einen String angewendet werden kann und dadurch alle Vorkommen gefunden werden. ..."
Versuche es mal bitte mit diesem g.
Viele Grüße vom Længlich
Unter den Erläuterungen steht aber auch folgendes:
"Zunächst wird ein regulärer Ausdruck mit dem Zusatz /.../gi definiert. Die Angabe g stellt sicher, dass exec() mehrmals auf einen String angewendet werden kann und dadurch alle Vorkommen gefunden werden. ..."Versuche es mal bitte mit diesem g.genau so funktioniert es!
danke ...