gruss Tom
Hallo Leute,
ich möchte aus einem String alle Sonderzeichen kopieren und habe folgendes Script geschrieben:
...
var myRegExp = /([^a-zA-ZäöüÄÖÜß0-9])/g;
var trefferListe = myRegExp.exec("Dorf-Ostdorf/Rhur");
var trefferListeJoin = trefferListe.join(" ");
alert(trefferListe.length + ' Elemente in ' + trefferListeJoin);
...
Nach meinem Verständnis müsste trefferListeJoin so aussehen:
"- /"
Sieht aber so aus:
"- -"Kann mir jemand sagen, wo mein Denkfehler liegt?
Du benutzt die methode "RegExp.exec", welche ein suchmuster genau
einmal ausfuehrt; Dein pattern sucht global nach genau einem zeichen,
welches nicht den in der eckigen klammer angegebenen zeichen
entspricht - durch verwendung der runden klammern speicherst
Du das suchergebnis in "RegExp.$1", obwohl Du darauf nach
"exec" gar nicht zugreifst;
das Du jetzt zweimal "-" liegt wahrscheinlich daran, dass Dir
das pattern voellig korrekt das eine gewuenschte zeichen aus
"[^a-zA-ZäöüÄÖÜß0-9]" zusammen mit noch einmal demselben zeichen
aus RegExp.$1 zurueckgibt, was der verwendung der runden klammern
geschuldet sein wird;
fuer Dein beispiel fuehrt die methode "exec" nur ueber umwege
zum gewuenschten ziel, einfacher ist die verwendung der String-
methode "match" zusammen mit einer kleinen korrektur an Deinem
regulaeren ausdruck:
var myRegExp = /[^a-zA-ZäöüÄÖÜß0-9]+/g;
// sucht folgen von sonderzeichen, die aus mindesten einem
// zeichen bestehen "[...]+" und das ganze dann globel "g";
var trefferListe = ("Dorf-Ostdorf/Rhur").match(myRegExp);
// wendet den RegExp auf ein string-objekt an;
// jede einzelne sonderzeichen-folge wird als eintrag in
// einem array gespeichert, welches diese methode zurueckgibt;
var trefferListeJoin;
if (trefferListe) {
trefferListeJoin = trefferListe.join(" ");
alert(trefferListe.length + ' Elemente in ' + trefferListeJoin);
} else {
alert("keine treffer");
}
jetzt erhaelst Du als ergebnis auch das gewuenschte "- /";
by(t)e by(t)e - peterS. - pseliger@gmx.net
sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)