zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Anwendung vom RegExp Objekt zur Überprüfung von Eingabefeldern

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 26.08.2015, 23:10
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 18.03.2015
Beiträge: 56
Parallax befindet sich auf einem aufstrebenden Ast
Standard 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
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 27.08.2015, 08:00
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 2.247
cloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblick
Standard

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)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 27.08.2015, 09:38
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

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.
Mit Zitat antworten
  #4 (permalink)  
Alt 10.09.2015, 09:37
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 18.03.2015
Beiträge: 56
Parallax befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #5 (permalink)  
Alt 10.09.2015, 11:05
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Du musst noch die Start- (^) und Endposition ($) des Strings mit in deinen Regex aufnehmen:
Code:
^[0-9]+[A-Za-Z]{0,1}$
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus



Alle Zeitangaben in WEZ +2. Es ist jetzt 22:16 Uhr.