Enrico: Problem mit dynamisch zusammenzusetzendem regulären Ausdruck

Hallo,

ich beschränke bei Formularfeldern die erlaubten Zeichen:

  
<input name="Test" id="Test" value="" type="text" onkeydown='Bereinigen ("Test", 2);' onkeyup='Bereinigen ("Test", 2);'>  

~~~~~~javascript
  
var Erlaubt = ["a-z -", "0-9.", "a-z -.0-9", "0-9", "a-z -."];  
             // 0        1       2            3      4  
  
function Bereinigen (Feld, Nr)  
{  
   Feld = document.getElementById (Feld);  
  
   var Test = "/[^" + Erlaubt[Nr] + "]/gi";  
  
   var B = /[^a-z]/gi; // a-z, A-Z  
  
   Feld.value = Feld.value.replace (Test, "");  
}  

Warum greift der reguläre Ausdruck, wenn ich den replace-Befehl "B" anstelle "RegExp" schreibe, und löscht nicht zugelassene Zeichen sofort heraus, aber nicht mit meinem Ansatz, den regulären Ausdruck in Abhängigkeit des zuzuweisenden, erlaubten Zeichenvorrats zusammenzusetzen?

var Test = new RegExp ("/[^" + Erlaubt[Nr] + "]/gi"); ändert auch nichts daran, dass nicht erlaubte Zeichen nicht zugelassen werden.

Lasse ich mir die Variable "Test" innerhalb der Funktion mit alert ausgeben, so scheint der reguläre Ausdruck korrekt zusammengesetzt worden zu sein:

/[^a-z -.0-9]/gi

Gruß,
Enrico

  1. Hallo,

    ich meinte natürlich...

    wenn ich den replace-Befehl "B" anstelle "Test"

    Gruß,
    Enrico
    PS: Es ist halt doch schön langsam Zeit, ins Bett zu gehen :-)

    1. var Test = new RegExp("[^" + Erlaubt[Nr] + "]", "gi");

      Und schon klappt es...