Marcel: RegExp-Pattern so richtig? Wie kann man Fehler besser finden?

Beitrag lesen

Hallo,

ich habe zwei Fragen: Zum einen versuche ich eine Benutzereingabe durch einen Regulären Ausdruck zu überprüfen. Da diese Art bereits mehrfach erfragt wurde (nicht nur hier sondern eigentlich überall), man aber viele verschiedenste Antworten erhält, würde ich also gern wissen, ob folgende Prüfung zum gewünschten Ergebnis führt. Das gewünschte Ergebnis ist, dass nur Buchstaben, Zahlen und die zwei Zeichen Unter- bzw. Bindestrich erlaubt sind. Meine Idee (zusammengedichtet aus mehreren Antworten, die ich über google gefunden habe):
/^[a-z0-9_-]+$/i
Nun habe ich auch gelesen, dass [a-zA-Z0-9_] gleichbedeutend mit \w sei. Demnach ließe sich meine Idee "verbessern" zu:
/^\w-$/

Eigentlich bin ich mir relativ sicher, dass es funktioniert (zumindest Ersteres), aber vor allem wegen meiner zweiten Frage (s.u.) möchte ich hier noch einmal sichergehen und nachfragen. Ich zweifle eigentlich nur noch leicht an dem Bindestrich, da ich nicht weiß, ob er tatsächlich als Bindestrich erkannt wird, oder ob versucht wird, ein Bereich festzulegen, was dann in einem fehlerhaften Pattern enden dürfte.

Meine zweite Frage bezieht sich mehr auf das Vorgehen zum Finden von Fehlern in einem Abfrage-Pattern. Gibt es eine Systematik, um möglichst viele (gar alle) Fehler zu finden? Klar könnte man diverse offensichtlich falsche und richtige Eingaben machen und die Ergebnisse anschauen. Aber ab und zu sieht man in Foren dann doch überraschende Eingaben, die augenscheinlich richtig sind, aber trotzdem als falsch erkannt werden. So würde ich beispielsweise gern mit meiner Überprüfung auch Umlaute ausschliessen, die einer ASCII Tabelle zu Folge nicht zwischen a und z liegen. Aber ist dies tatsächlich auch der Fall? In einfachen Fällen (so wie mein Beispiel gerade) wären es vielleicht sogar möglich, durch Eingaben die Überprüfung zu kontrollieren und zu verifizieren. Aber bei komplizierten Überprüfungen würde ich nun denken, dass es andere Wege geben wird einen Pattern auf Korrektheit zu überprüfen.

Gruß,
Marcel