csx: Nur bestimmte Zeichen in <input type="text"> erlauben...

Beitrag lesen

Hi!

var erlaubt = "1234567890,+-*/()";
var regexp  = /[^$erlaubt]/;
var formval = document.rechner.line.value;
var ergebnis= regexp.exec(formval);

Das sieht zwar ganz gut aus, aber irgendwie kapier ich das mit dem regexp nicht ganz, auch mit der Beschreibung im selfhtml nicht!
Wie kann das script hier heraus finden ob nicht-erlaubte Zeichen enthalten sind und gegebenen Falls eine function aufrufen?

Ich kenn den RegExp-Syntax bei javascript leider nicht so richtig. Der Ausdruck

var regexp  = /[^1234567890,+-\*/()]/;

besagt aber (die Sonderzeichen müssen durch vorangestelltes \ escapt werden), daß in der Zeichenkette, auf die der Ausdruck angewendet wird, folgendes gesucht wird:

Die [ ] bedeutet ODER. Es wird also nicht nach der Zeichen_kette_ gesucht, sondern nach 1 oder 2 oder 3 oder...

Das ^ bedeutet NICHT. Also wird nach allem gesucht, was NICHT 1 oder 2 oder 3 oder ...etc pp. ist.

Wenn der Ausdruck also etwas zurückgibt, dann hast du ein Zeichen gefunden, was nicht erlaubt ist. Wenn der Ausdruck FALSE (oder 0 oder  so, wie gesagt, mußt mal unter eval() nachgucken) zurückgibt, dann hat er keine verbotenen Zeichen gefunden.

So zumindest die Theorie hehe ;)

Gruß
csx