Problem mit RegExp
beToiba
- javascript
Hallo,
ich habe folgende Funktion erstellt:
function validate_input(element, option) {
var pregex;
var text = document.getElementById(element).value;
/*window.alert(text);*/
switch (option) {
case "a":
pregex = "/([0-9]){1,5}(,|\.){1}([0-9]){2}/";
exmpl = "0.00, 0.01, 0.02 ... 99999.99";
break;
case "b":
pregex = "/([0-9]){1,5}(,|\.){1}([0-9]){1,3}/";
exmpl = "0.000, 0.001, 0.002 ... 99999.999";
break;
case "c":
pregex = "/([0-9]){1,10}/";
exmpl = "0,1,2 ... 9999999999";
break;
case "d":
pregex = "/([0|1|2]){1}([0-9]){1}/";
exmpl = "01,02,03 ... 24";
break;
}
/*window.alert('/([0-9]){1,5}(,|\.){1}([0-9]){2}/');*/
if(text.match(pregex) == null) {
document.getElementById(element).style.backgroundColor = '#f00';
window.alert("Valider Zahlenbereich: " + exmpl);
}
else {
document.getElementById(element).style.backgroundColor = '#09f';
}
}
Nun habe ich das Problem, dass match() auch (eigentlich) valide Eingaben nicht erkennt. Zur Zeit teste ich nur mit Variante "a"!
Wenn ich den RegExp String im alert Fenster ausgeben lasse, wird der Backslash, der ja eigentlich den "." escapen soll nicht mehr angezeigt.
Kann es sein, dass Javascript diesen irgendwie falsch interpretiert und "ausschneidet"? Oder habe ich generell Fehler im Script?
Vielen Dank im Voraus.
Matthias
Kann es sein, dass Javascript diesen irgendwie falsch interpretiert und "ausschneidet"? Oder habe ich generell Fehler im Script?
Ja, eine Regulärer Ausdruck ist keine Zeichenkette. Aber ich würde einen Wertebereich nicht mit einem Regulären Ausruck testen.
Struppi.
Kann es sein, dass Javascript diesen irgendwie falsch interpretiert und "ausschneidet"? Oder habe ich generell Fehler im Script?
Ja, eine Regulärer Ausdruck ist keine Zeichenkette. Aber ich würde einen Wertebereich nicht mit einem Regulären Ausruck testen.
Struppi.
Hallo Struppi,
erstmal danke für die Antwort.
Aber es ist ja kein wirklicher "Wertebereich". Es geht mehr um die "Formatierung" des Wertes (nur zwei Nachkommastellen oder nur drei, oder gar nur Werte von 0 - 24).
Das Script wird beim onchange von Formularfeldern angewendet.
Welche Möglichkeit würdest du denn verwenden, wenn man in einem Feld zum Beispiel nur monetäre Werte im anderen Feld Millimeter Werte eingeben können soll?
Gruß
Matthias