RegExp
Shaguar
- javascript
Mal wieder das alte RegExp :-)
Ich würde gerne folgendes machen, ich habe einen String der mehrere Links enthält, von diesen Links möchte ich die Zieladresse ändern, aber nicht alle auf dieselbe Adresse sondern jeden unterschiedlich. Also je nachdem was vorher unter href="" stand soll ein eine Adresse angepasst habe.
neu.replace(/href="(\S*)"/g, 'href=""');
so könnte ich ja alle ändern, aber wenn unter href "ordner/x/y/abc/" ann möchte ich das er das durch zB "/abc/" ersetzt und das halt auf jeden Link angepasst.
Das (\S*) liefert mir ja nur einen Wert zurück oder?
also RegExp.$1
Kann ich das ganze irgendwie in einer Schleife durchlaufen lassen und bei jedem Durchlauf nur einen Link verändern? und die Schleife soll solange weiterlaufen bis er keiner Treffer mehr findet im String?
Mfg
gudn tach!
deine problembeschreibung ist mir etwas zu konfus. aber nach dem zweiten lesen hab ich's, glaube ich, halbwegs verstanden.
ich habe die js-regexp-syntax nicht genau im kopf, aber
so in etwa
replace(/href=".*(/[a-z]+/)"/g, 'href="$1"');
wuerdest du die ersetzung
"ordner/x/y/abc/" -> "/abc/"
vornehmen, wobei "abc" eine beliebige zeichenkette aus kleinen buchstaben sein darf.
Das (\S*) liefert mir ja nur einen Wert zurück oder?
also RegExp.$1
ja oder direkt im ersetzungsstring einfach $1.
siehe http://de.selfhtml.org/javascript/objekte/regexp.htm#dollar_1_9
Kann ich das ganze irgendwie in einer Schleife durchlaufen lassen und bei jedem Durchlauf nur einen Link verändern? und die Schleife soll solange weiterlaufen bis er keiner Treffer mehr findet im String?
ja auch das geht. mit dem g-modifier (das /g am ende) sagst du, dass die ersetzungen sooft durchgefuehrt werden sollen, bis das search-pattern nichts mehr matcht, d.h. bis nichts mehr ersetzt werden kann.
prost
seth
Ja und was ist wenn ich aber bei jedem Suchtreffer den Link anders ersetzen will, sprich einmal durch das /abc/ und einmal durch /x/y
Ja und was ist wenn ich aber bei jedem Suchtreffer den Link anders ersetzen will, sprich einmal durch das /abc/ und einmal durch /x/y
ach so, es geht jeweils um denselben url, bloss an versch. stellen, der ersetzt werden soll.
dann brauchst du wohl keine regexp zu verwenden, sondern kannst die anderen string-funktionen in einer schleife verwenden. also "substring", "indexof" und sowas. sind vielleicht 10 bis 15 zeilen code.
eine andere, vielleicht bessere moeglichkeit ist, den string zu splitten, und zwar an den stellen, wo der url auftaucht. zusammensetzen (joinen) kannst du die stringparts dann in einer schleife mit den neuen urls.
prost
seth