Der Rosi: Reguläre Ausdrücke funktionieren einfach nicht.

Hallo zusammen.

Also ich werde nochmal wahnsinnig! Ich versuche in einem Formular sicher zu stellen, das nur korrekte Eingaben gemacht werden. Es ist zum verrückt werden. Den Namen und Vornamen incl. Sonderzeichen wie ß und äöü usw. habe ich mit Regulären Ausdrücken hin bekommen. Auch Mail und Telefonnummer hauen hin. Nun kommts aber dicke. Die Straße und die Postleitzahl wollen einfach nicht mehr hinhauen. Hier mein Code für die PLZ Prüfung.

JavaScript Teil:

  
function plztest() {  
var element=document.formular.plz;  
var regular=/^\d{5}$/;  
erg = regular.test(element);  
alert (erg);  
if (erg == false) {  
	document.getElementById('plz').style.backgroundColor=fehlerfarbe;  
	} else {  
	document.getElementById('plz').style.backgroundColor=okfarbe;  
 }  
}  

HTML Teil:

  
<input size="5" name="plz" id="plz" onkeyup="plztest()" type="text" /><span id="ok_plz"></span>  

Die regular für die Straße sollte Sonderzeichen wie Ä-Ü sowie Zahlen und Punkt, Leer und Minus erlauben. Aber selbst das einfache \w will nicht hinhauen.

  
var regular = /^\w$/;  
/* oder auch */  
var regular = /^[0-9a-zA-Zä-üÄ-Ü\s-\.]*$/;  

Wenn Ihr mir hier helfen könntet wäre ich ein riesiges stück weiter.

MFG
Der Rosi

  1. Hallo Der Rosi,

    Die Straße und die Postleitzahl wollen einfach nicht mehr hinhauen.
    var element=document.formular.plz;

    An dieser Stelle hast Du die Referenz auf das Input-Feld.

    erg = regular.test(element);

    Hier testest Du diese Referenz mit Deinem Ausdruck. In Wirklichkeit möchtest Du doch aber dessen Inhalt prüfen:
    erg = regular.test(element.value);

    <input size="5" name="plz" id="plz" onkeyup="plztest()" type="text" /><span id="ok_plz"></span>

    hier könnte ich mir noch ein zusätzliches maxlength vorstellen.

    Mit freundlichem Gruß
    Micha

    --
    kostenlose JavaScript Spiele: Snake, MineSweeper oder Sudoku
    1. erg = regular.test(element);
      Hier testest Du diese Referenz mit Deinem Ausdruck. In Wirklichkeit möchtest Du doch aber dessen Inhalt prüfen:
      erg = regular.test(element.value);

      OK. Ich lass mich einmotten. Das war es. Wenn ich das komplette Objekt Teste, dann kann ja nur "false" kommen.

      <input size="5" name="plz" id="plz" onkeyup="plztest()" type="text" /><span id="ok_plz"></span>
      hier könnte ich mir noch ein zusätzliches maxlength vorstellen.

      Das Formular ist auch noch nicht komplett, aber Danke für den Tip.

      Mit freundlichem Gruß
      Der Rosie

  2. @@Der Rosi:

    nuqneH

    Den Namen und Vornamen incl. Sonderzeichen wie ß und äöü usw. habe ich mit Regulären Ausdrücken hin bekommen.

    Ach ja? Und an die Renés und Désirées hast du auch gedacht? Und an die Sanchéz und Wiśniewskis?

    Du willst alle Namen, die irgendwie undeutsch sind, ausschließen?

    Nun kommts aber dicke. Die Straße und die Postleitzahl wollen einfach nicht mehr hinhauen. Hier mein Code für die PLZ Prüfung.
    var regular=/^\d{5}$/;

    Eine PLZ besteht aus genau 5 Ziffern?? Nein!

    Das mag für PLZ in Deutschland gelten, in anderen Ländern ist es eine andere Anzahl von Ziffern oder PLZ bestehen nicht einmal nur aus Ziffern.

    Ein Formular, das nur von in Deutschland Lebenden ausgefüllt werden kann, ist wohl im World Wide Web fehl am Platze.

    Dein Problem sind nicht reguläre Ausdrücke, sondern das Konzept deines Formulars.

    Qapla'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)