Calocybe: Array-Variablen in regulaeren ausdruecken!

Beitrag lesen

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