|
|||
Anwendung vom RegExp Objekt zur Überprüfung von Eingabefeldern
Hi,
ich möchte mehrere Eingabefelder per JS überprüfen, um zu sehen ob die getätigten Eingaben gültig sein können. Für die Email habe ich folgenden Ausdruck gewählt: RegExp('.+@.+[\.].{2}') Damit darf am Anfang jedes beliebige Zeichen, aber mindestens 1x stehen, gefolgt von einem @ Zeichen anschließend wieder jedes beliebiges Zeichen, mindestens einmal, gefolgt von einem Punkt, und anschließend wieder mindestens zwei beliebige Zeichen. Damit lassen sich zwar nicht alle gültigen Email Adressen erkennen, aber zumindest ein Fehler in einem einfachen Aufbau wird erkannt. Das funktioniert soweit. Nun möchte ich zwei weitere Felder überprüfen, und zwar die Straße und getrennt davon die Hausnummer. Für die Straße habe ich mir überlegt, das alle Zeichen vorkommen dürfen, außer Zahlen, da diese ja in der Hausnummer hinterlegt werden sollen. Eine genaue Einengung auf bestimmte Zeichen erscheint mir zu komplex, da Straßennamen ja auch ß, Umlaute, Apostroph, sowie Punkte oder Bindestriche enthalten können. Wie könnte eine solche Expression aussehen? Für die Hausnummer sollen Anfangs beliebig viele Zahlen kommen können, gefolgt von einem Buchstaben, aber ohne Leerzeichen. Dafür habe ich mir RegExp('[0-9][a-zA-Z]') überlegt. Aber wie gibt man an, das 0-9 am Anfang stehen muss, und dann ein Buchstabe folgen kann. Hat da jemand ne gute Anleitung? Grüße, Parallax |
Sponsored Links |
|
|||
Sucht man nach regex hausnummer (oder regex straße) dann findet man einige Ergebnisse. Hier ist zB eines davon.
Und wieso verwendest du für email nicht <input type="email"> ? Auch solltest du dir bewusst sein, dass du die Validierung immer im Serverseitig durchführen musst, auf der Seite selbst würde ich nur simple Überprüfungen einbauen (also ob etwas drinnen steht und dann nur auf Zahlen und/oder Buchstaben abfragen) |
Sponsored Links |
|
||||
Dein E-Mail-Regex ist problematisch, ich@example.com würde abgelehnt werden, ebenso irgendwas@example.name. Du solltest die TLD keinesfalls auf 2 Stellen beschränken. Der Punkt in der Character-Class muss nicht escaped werden.
Der Regex für die Hausnummer müsste mindestens so aussehen: /[0-9]+[a-zA-Z]*/ sonst würde er nur auf einstellige Hausnummern gefolgt von einem Buchstaben zutreffen. Beim Straßennamen würde ich gar nichts weiter einschränken, da gibt es echt du unmöglichsten Namen. Wenn du reguläre Ausdrücke testen möchtest, kann ich dir nur https://regex101.com/ empfehlen, da wird auch jeder Bestandteil noch mal genau erklärt. |
|
|||
Also die Internetseite mit dem RegEx Tester ist echt praktisch...
Allerdings steig ich noch nicht ganz durch. Kommen wir nochmal auf das Beispiel mit der Hausnummer zurück: ('[0-9]+[A-Za-Z]{0,1}') Dieser Ausdruck würde auf eine Reiche von beliebig vielen Zahlen, gefolgt von keinen oder einem Buchstaben zutreffen. Die Methode Test liefert mir jedoch auch ein True bei 51b6 weil natürlich der erste Teil, also 51b der Expression entspricht, die nachfolgende 6 wird ignoriert. Wie kann ich das so umbauen, damit der ganze String überprüft wird? Grüße, Parallax |
Themen-Optionen | |
Ansicht | |
|
|