Array-Variablen in regulaeren ausdruecken!
Gaby
- javascript
0 michi0 Gaby
0 Calocybe0 Antje Hofmann
Hallo Leute,
ich habe ein ganz kleines Problem:
ich moechte in einem regulaeren Ausdruck
den Wert einer Array-Variable angeben
z.B. so:
Sonderzeichen = new Array ("@","!","ö");
for(i = 0; i < Sonderzeichen.length; i++)
if Text.search(/Sonderzeichen[i])/) != -1)
alert("Bitte keine Sonderzeichen verwenden");
Diese Syntax scheint irgendwie falsch zu sein.
Wer kann mir helfen?
Eure Gabi
so ists falsch:
if Text.search(/Sonderzeichen[i])/) != -1)
und so richtig:
if(Text.search(/Sonderzeichen[i]/) != -1)
denk ich zumindest, weil du die anzahl der klammern, die du öffnest auch wieder schließen mußt. hab zwar von dem befehl Text.search noch nie was gehört und die / sehen auch komisch aus, aber wird schon klappen. was machtn der befehl? steht der im selfhtml (zu faul zum suchen)?
wenn das nicht klappt, kannst du ja mal die " gegen ' austauschen...
mfg michi
so ists falsch:
if Text.search(/Sonderzeichen[i])/) != -1)
und so richtig:
if(Text.search(/Sonderzeichen[i]/) != -1)
denk ich zumindest, weil du die anzahl der klammern, die du öffnest auch wieder schließen mußt. hab zwar von dem befehl Text.search noch nie was gehört und die / sehen auch komisch aus, aber wird schon klappen. was machtn der befehl? steht der im selfhtml (zu faul zum suchen)?
wenn das nicht klappt, kannst du ja mal die " gegen ' austauschen...
mfg michi
Oh, die Klammer hatte ich vergessen,
aber daran liegt es leider leider nicht!
Der Search-Befehl steht auf folgender Seite erklaert:
http://www.teamone.de/selfhtml/tecl.htm#a20
Gruss
Gaby
Hi!
Sonderzeichen = new Array ("@","!","ö");
for(i = 0; i < Sonderzeichen.length; i++)
if Text.search(/Sonderzeichen[i])/) != -1)
alert("Bitte keine Sonderzeichen verwenden");
»»
Diese Syntax scheint irgendwie falsch zu sein.
Ist sie auch. Innerhalb der / wird 'Sonderzeichen' nicht als Variable interpretiert, sondern der String "Sonderzeichen" wird direkt in den RegExp eingefuegt. Es wird im Endeffekt immer nach "Sonderzeicheni" gesucht. (Auch das i wird als Zeichen genommen, nicht als Variable.
Der Schluessel zur Loesung ist das RegExp-Objekt, mit dem Du *dynamisch* neue regulaere Ausdruecke erstellen kannst. Die Syntax findest Du auf http://developer.netscape.com/docs/manuals/js/client/jsref/regexp.htm beschrieben. Fuer Deinen Fall ergibt sich:
if (Text.search(new RegExp(Sonderzeichen[i])) != -1)
Eine Alternative waere noch die Verwendung von eval():
var exp = eval('/' + Sonderzeichen[i] + '/');
if (Text.search(exp) != -1)
Falls Du mit eval() unzugehen weisst, weisst Du ja, was das bedeutet. Andernfalls solltet Du's besser lassen.
Uebrigens solltest Du eine Variable nicht Text nennen, denn Text ist der Name des Objekts, das einzeilige INPUT-Felder kapselt. text (kleingeschrieben) ist dagegen in Ordnung.
So long
Hallo Gabi
ich habe ein ganz kleines Problem:
ich moechte in einem regulaeren Ausdruck
den Wert einer Array-Variable angeben
z.B. so:
Sonderzeichen = new Array ("@","!","ö");
for(i = 0; i < Sonderzeichen.length; i++)
if Text.search(/Sonderzeichen[i])/) != -1)
alert("Bitte keine Sonderzeichen verwenden");
hier hast du drei Möglichkeiten, keine davon klappt mit Opera der Rest NN4,NN6 und IE gehen.
//Dein String:
ab="test@jsödd";
//Lösung mit Arrays:
Sonderzeichen = new Array ("@","!","ö");
Sonderzeichen="["+Sonderzeichen.join("")+"]";
Sonderzeichen=new RegExp(Sonderzeichen, "g")
if (ab!=null) Zeichen=ab.match(Sonderzeichen)
if (ab!=null) {alert("Bitte verwenden Sie nicht die Sonderzeichen:\n\n"+Zeichen);}
//Lösung durch Angabe der erlaubten Zeichen (die verwende ich immer):
if (ab!=null) Zeichen=ab.match(/[^§!+/?`´'*- üäÜÖÄß;:a-zA-Z_0-9]/g)
if (Zeichen!=null) {alert("Bitte verwenden Sie nicht die Sonderzeichen:\n\n"+Zeichen);}
//Lösung durch Angabe der nicht erlaubten Zeichen:
if (ab!=null) Zeichen=ab.match(/[@!ö]/g)
if (Zeichen!=null) {alert("Bitte verwenden Sie nicht die Sonderzeichen:\n\n"+Zeichen);}
Viele Grüße
Antje