Reguläre Asdrücke - Zahlenwert überprüfen
Sebastian
- javascript
Hy, hier wieder mal eine der beliebten Kniffelaufgaben mit RegExp:
in einem Textfeld "Strasse und Hausnummer" soll mittels Regulären Ausdrücken überprüft werden, ob auf die Angabe der Strasse eine mindestens ein- bis maximal dreistellige Hausnummer folgt.
Der Reguläre Ausdruck hierfür sähe meiner Meinung nach so aus:
ausdruck = /\d{1,3}$/; // Eine Zahl, mindestens ein- bis maximal dreistellig am Ende
So!
Jetzt sind aber hier leider auch Angaben wie "1 2 3" - also eine ein- bis dreistellige Zahl - mit Leerzeichen dazwischen - möglich.
Eine gute deutsche Hausnummer kennt einen derartigen Aufbau aber nicht!
Grundsätzlich sind Leerzeichen in diesem Textfeld ja erlaubt; ein genereller Ausschluß von Leerzeichen ist also nicht möglich.
Jetzt bin ich auf die Idee gekommen, die Hausnummer mittels "exec" zu selektieren und daraus eventuell vorhandene Leerzeichen per "replace" zu entfernen:
ausdruck = /(\d{1,3})$/;
wert = textfeld.value;
hausnummer = ausdruck.exec(wert);
hausnummer[1] liefert mir bei Angaben wie "1 2 3" aber leider nur die jeweils letzte Ziffer einer Ziffernfolge und nicht den gesammten, in ( ) gesetzten Suchstring.
Wie kann ich bloß im Textfeld "Strasse und Hausnummer" die Hausnummer selektieren und getrennt vom übrigen Wert auf ein korrektes Format überprüfen ?
Mit Dank im voraus
Sebastian
Hello out there!
Wie kann ich bloß im Textfeld "Strasse und Hausnummer" die Hausnummer selektieren und getrennt vom übrigen Wert auf ein korrektes Format überprüfen ?
Gar nicht. Du könntest zwar prüfen, ob vor dem letzten Leerzeichen eine Ziffer steht – aber was bringt das? Es gibt auch Straßen, die heißen einfach nur „Straße 42“.
See ya up the road,
Gunnar
Wie kann ich bloß im Textfeld "Strasse und Hausnummer" die Hausnummer selektieren und getrennt vom übrigen Wert auf ein korrektes Format überprüfen ?
Hallo,
folgende Lösung wäre zwar etwas umständlich aber meiner Meinung nach machbar:
1. alle leerzeichen löschen
2. in einer Schleife (1-9) nach der ersten Zahl suchen
3. an dieser Stelle wieder Trennen
4. Fertig ist die Zahl!
Frag mich jetzt aber nicht nach dem Code dazu. Javascript ist nicht meine Stärke.
Hello out there!
meiner Meinung nach machbar:
Dann nehmen wir mal die Adresse der Technischen Uni Berlin: Straße des 17. Juni 135.
- alle leerzeichen löschen
- in einer Schleife (1-9) nach der ersten Zahl suchen
- an dieser Stelle wieder Trennen
- Fertig ist die Zahl!
Was gibt dein Algorithmus aus?
See ya up the road,
Gunnar
PS: Bei 2. meintest du wohl „Ziffer“, nicht „Zahl“.
Hallo,
Dann nehmen wir mal die Adresse der Technischen Uni Berlin: Straße des 17. Juni 135.
Ist mir klar. Aber es fängt schon eine Menge ab. Hier gibt's auch eine 91'er Straße. Da geht gar nichts. Aber wenn er's doch will.
Man kann es aber auch andersrum machen:
1. String umkehren
2. nach 1. Buchstaben suchen (wenn er nicht am Anfang (bzw. am Endedes Originals) steht)
3. Ziffern Zahl (!) wieder umkehren
Klappt aber auch nicht immer: z. B. Straßenname 12 a/b
PS: Bei 2. meintest du wohl „Ziffer“, nicht „Zahl“.
Logisch!
Muß man halt entscheiden was man will/braucht.
gudn tach!
in einem Textfeld "Strasse und Hausnummer" soll mittels Regulären Ausdrücken überprüft werden, ob auf die Angabe der Strasse eine mindestens ein- bis maximal dreistellige Hausnummer folgt.
/\D\d{1,3}$/
sind auch einzelne buchstaben nach der zahl erlaubt, so waere
/\D\d{1,3}( ?[a-z])?$/
eine moeglichkeit.
ich wuerde aber ohne eine solche ueberpruefung arbeiten, weil postanschriften sehr unterschiedlich aussehen koennen:
http://de.wikipedia.org/wiki/Postanschrift
prost
seth