Problem mit regulären Ausdrücken
Problem mit regulären Ausdrücken
am 27.09.2006 09:57:24 von Mathias Haimerl
Hallo, Group.
Ich schreibe grad ein Script, das in D, A und CH für PLZ und Ort
erkennen soll, ob eine PLZ und ein Ort eingegeben ist.
Mein Code:
if (!preg_match('/[0-9]{4,5}[,[:space:]]*[\/\.\(\)a-z]{3,}/i',
$_POST['txtPlzOrt'])) {
Mein Problem:
Wenn die PLZ z.B. 94405 ist, funktioniert es wunderbar.
Wenn die PLZ aber 93333 ist, gibt es false zurück.
Mache ich was falsch, oder ist das ein bug?
Mfg
Le Hias
Re: Problem mit regulären Ausdrücken
am 27.09.2006 10:19:29 von Alex Hepp
Mathias Haimerl schrieb:
> Hallo, Group.
> Ich schreibe grad ein Script, das in D, A und CH für PLZ und Ort
> erkennen soll, ob eine PLZ und ein Ort eingegeben ist.
> Mein Code:
>
> if (!preg_match('/[0-9]{4,5}[,[:space:]]*[\/\.\(\)a-z]{3,}/i',
> $_POST['txtPlzOrt'])) {
>
> Mein Problem:
> Wenn die PLZ z.B. 94405 ist, funktioniert es wunderbar.
> Wenn die PLZ aber 93333 ist, gibt es false zurück.
> Mache ich was falsch, oder ist das ein bug?
Hmm, kann eigentlich nicht sein, welche php version?
Ich sehe aber noch ein anderes Problem, denn Du erkennst auch
99394, , , , , , Superdorf
was ist mit den Orten: Au (viele), Ay, Ed, Ob und Oy??? ;) Es gibt sehr
wohl 2-buchstabige Ortsnamen ;)
Was ist mit zusammengesetzten Ortsnamen wie Villingen-Schwenningen? Der
bindestrich muss in die class dazu!
Für [:space:] kannst Du auch \s verwenden!
gruß Alex
Re: Problem mit regulären Ausdrücken
am 27.09.2006 10:41:32 von Jens Riedel
Alex Hepp wrote:
> Für [:space:] kannst Du auch \s verwenden!
Nicht ganz. \s kann auch ein Tab, Zeilenumbruch oder ein sonstiges
nicht-druckbares Zeichen sein.
Aber für [:space:] kann er auch ein Space-Zeichen verwenden ;-)
Also [, ]
Jens
--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach
Re: Problem mit regulären Ausdrücken
am 27.09.2006 10:42:22 von Mathias Haimerl
Alex Hepp schrieb:
> Mathias Haimerl schrieb:
>> Hallo, Group.
>> Ich schreibe grad ein Script, das in D, A und CH für PLZ und Ort
>> erkennen soll, ob eine PLZ und ein Ort eingegeben ist.
>> Mein Code:
>>
>> if (!preg_match('/[0-9]{4,5}[,[:space:]]*[\/\.\(\)a-z]{3,}/i',
>> $_POST['txtPlzOrt'])) {
>>
>> Mein Problem:
>> Wenn die PLZ z.B. 94405 ist, funktioniert es wunderbar.
>> Wenn die PLZ aber 93333 ist, gibt es false zurück.
>> Mache ich was falsch, oder ist das ein bug?
>
> Hmm, kann eigentlich nicht sein, welche php version?
>
> Ich sehe aber noch ein anderes Problem, denn Du erkennst auch
>
> 99394, , , , , , Superdorf
>
> was ist mit den Orten: Au (viele), Ay, Ed, Ob und Oy??? ;) Es gibt sehr
> wohl 2-buchstabige Ortsnamen ;)
>
> Was ist mit zusammengesetzten Ortsnamen wie Villingen-Schwenningen? Der
> bindestrich muss in die class dazu!
>
> Für [:space:] kannst Du auch \s verwenden!
>
> gruß Alex
Danke Schön,
Ich verwende Php 4.irgendwas
mein reg.Ausdruck lautet jetzt
/[0-9]{4,5}[,]?[\s]?[\/\.\(\)\-a-z]{2,}/i
und es funtioniert plötzlich.
Is zwar seltsam, aber das passt ja dann
Danke nochmal
Le Hias
Re: Problem mit regulären Ausdrücken
am 27.09.2006 10:42:28 von Claus Reibenstein
Mathias Haimerl schrieb:
> Ich schreibe grad ein Script, das in D, A und CH für PLZ und Ort
> erkennen soll, ob eine PLZ und ein Ort eingegeben ist.
> Mein Code:
>
> if (!preg_match('/[0-9]{4,5}[,[:space:]]*[\/\.\(\)a-z]{3,}/i',
> $_POST['txtPlzOrt'])) {
>
> Mein Problem:
> Wenn die PLZ z.B. 94405 ist, funktioniert es wunderbar.
> Wenn die PLZ aber 93333 ist, gibt es false zurück.
Du meinst vermutlich, dass 0 zurückkommt. false würde auf einen Fehler
hindeuten, z.B. eine fehlerhafte RE. Ist hier aber nicht der Fall.
Es müsste beide Male 0 geliefert werden, wenn Du nur eine PLZ eingibst.
Ich nehme mal an, Du hast danach auch noch einen Ort angegeben. Welchen?
In welchem Format? Ich vermute mal, dass da der Fehler zu suchen ist.
Falls es deutsche PLZs sind (die 5 Stellen deuten darauf hin), wären das
die Orte
94405 Landau an der Isar
93333 Neustadt an der Donau
Wenn Du die Namen so eingegeben hast, sollte es funktionieren (bei mir
tut es).
Gruß. Claus
Re: Problem mit regulären Ausdrücken
am 27.09.2006 10:44:01 von Mathias Haimerl
Alex Hepp schrieb:
> Mathias Haimerl schrieb:
>> Hallo, Group.
>> Ich schreibe grad ein Script, das in D, A und CH für PLZ und Ort
>> erkennen soll, ob eine PLZ und ein Ort eingegeben ist.
>> Mein Code:
>>
>> if (!preg_match('/[0-9]{4,5}[,[:space:]]*[\/\.\(\)a-z]{3,}/i',
>> $_POST['txtPlzOrt'])) {
>>
>> Mein Problem:
>> Wenn die PLZ z.B. 94405 ist, funktioniert es wunderbar.
>> Wenn die PLZ aber 93333 ist, gibt es false zurück.
>> Mache ich was falsch, oder ist das ein bug?
>
> Hmm, kann eigentlich nicht sein, welche php version?
>
> Ich sehe aber noch ein anderes Problem, denn Du erkennst auch
>
> 99394, , , , , , Superdorf
>
> was ist mit den Orten: Au (viele), Ay, Ed, Ob und Oy??? ;) Es gibt sehr
> wohl 2-buchstabige Ortsnamen ;)
>
> Was ist mit zusammengesetzten Ortsnamen wie Villingen-Schwenningen? Der
> bindestrich muss in die class dazu!
>
> Für [:space:] kannst Du auch \s verwenden!
>
> gruß Alex
Danke Schön,
Ich verwende Php 4.irgendwas
mein reg.Ausdruck lautet jetzt
/[0-9]{4,5}[, ]?[\/\.\(\)\-a-z]{2,}/i
und es funtioniert plötzlich.
Is zwar seltsam, aber das passt ja dann
Danke nochmal
Le Hias
Re: Problem mit regulären Ausdrücken
am 27.09.2006 10:45:46 von Mathias Haimerl
Claus Reibenstein schrieb:
> Mathias Haimerl schrieb:
>
>> Ich schreibe grad ein Script, das in D, A und CH für PLZ und Ort
>> erkennen soll, ob eine PLZ und ein Ort eingegeben ist.
>> Mein Code:
>>
>> if (!preg_match('/[0-9]{4,5}[,[:space:]]*[\/\.\(\)a-z]{3,}/i',
>> $_POST['txtPlzOrt'])) {
>>
>> Mein Problem:
>> Wenn die PLZ z.B. 94405 ist, funktioniert es wunderbar.
>> Wenn die PLZ aber 93333 ist, gibt es false zurück.
>
> Du meinst vermutlich, dass 0 zurückkommt. false würde auf einen Fehler
> hindeuten, z.B. eine fehlerhafte RE. Ist hier aber nicht der Fall.
>
> Es müsste beide Male 0 geliefert werden, wenn Du nur eine PLZ eingibst.
> Ich nehme mal an, Du hast danach auch noch einen Ort angegeben. Welchen?
> In welchem Format? Ich vermute mal, dass da der Fehler zu suchen ist.
>
> Falls es deutsche PLZs sind (die 5 Stellen deuten darauf hin), wären das
> die Orte
>
> 94405 Landau an der Isar
> 93333 Neustadt an der Donau
>
> Wenn Du die Namen so eingegeben hast, sollte es funktionieren (bei mir
> tut es).
>
> Gruß. Claus
Ich habe
94405 Landau/Isar
und als Härtetest
93333 Neustadt/Do.
eingegeben.
aber das seltsame ist, das es jetz funktioniert.
Re: Problem mit regulären Ausdrücken
am 27.09.2006 11:03:34 von Alex Hepp
Jens Riedel schrieb:
> Alex Hepp wrote:
>
>> Für [:space:] kannst Du auch \s verwenden!
>
> Nicht ganz. \s kann auch ein Tab, Zeilenumbruch oder ein sonstiges
> nicht-druckbares Zeichen sein.
und was ist [:space:] anderes??? Auch das "erkennt" alle Whitespace zeichen!
und seit wann steht \s auch für ein Backspace od. escape?
> Aber für [:space:] kann er auch ein Space-Zeichen verwenden ;-)
> Also [, ]
Das stimmt allerdings!!! Aber ich dachte, er wollte eben auch LF und
Tabs erlauben! ;)
gruß alex
Re: Problem mit regulären Ausdrücken
am 27.09.2006 11:17:38 von Claus Reibenstein
Mathias Haimerl schrieb:
> Claus Reibenstein schrieb:
>
>> 94405 Landau an der Isar
>> 93333 Neustadt an der Donau
>
> 94405 Landau/Isar
> 93333 Neustadt/Do.
Auch die funktionieren beide bei mir problemlos.
> aber das seltsame ist, das es jetz funktioniert.
Dann würde ich mal auf einen Eingabefehler beim Testen schließen :-)
Gruß. Claus
Re: Problem mit regulären Ausdrücken
am 27.09.2006 11:19:59 von Jens Riedel
Alex Hepp wrote:
> und was ist [:space:] anderes??? Auch das "erkennt" alle Whitespace
> zeichen!
>
> und seit wann steht \s auch für ein Backspace od. escape?
Ups, da war ich wohl noch nicht ganz wach... hast natürlich Recht!
Gruß,
Jens
--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach
Re: Problem mit regulären Ausdrücken
am 27.09.2006 11:26:18 von Alex Hepp
Jens Riedel schrieb:
> Alex Hepp wrote:
>
>> und was ist [:space:] anderes??? Auch das "erkennt" alle Whitespace
>> zeichen!
>>
>> und seit wann steht \s auch für ein Backspace od. escape?
>
> Ups, da war ich wohl noch nicht ganz wach... hast natürlich Recht!
Noch Student ??? ;)
SCNR ;)
alex
Re: Problem mit regulären Ausdrücken
am 27.09.2006 11:31:45 von Alex Hepp
Claus Reibenstein schrieb:
> Mathias Haimerl schrieb:
>
>> Claus Reibenstein schrieb:
>>
>>> 94405 Landau an der Isar
>>> 93333 Neustadt an der Donau
>> 94405 Landau/Isar
>> 93333 Neustadt/Do.
>
> Auch die funktionieren beide bei mir problemlos.
>
>> aber das seltsame ist, das es jetz funktioniert.
>
> Dann würde ich mal auf einen Eingabefehler beim Testen schließen :-)
Hab mir das nochmal angesehen, und frage mich ehrlich gesagt gerade,
warum spaces im Ort akzeptiert werden, denn [\/\.\(\)a-z] erkennt
eigentlich nur Buchstaben, Punkt, Slash und Backslash. Woher kommt denn,
dass auch " " akzeptiert wird?
Oha, und noch was: Das, was Du gerade hast, nimmt auch alles vorher und
nachher an:
sprich, dass hier klappt auch:
alkjhskdfjhkjdhfkjh04983,Münschhausendorf #+üö-äß´´´´[$a]
usw.
Füge noch ^ am Anfang und $ am Ende ein....
gruß alex
Re: Problem mit regulären Ausdrücken
am 27.09.2006 11:39:21 von Jens Riedel
Alex Hepp wrote:
> Noch Student ??? ;)
Oh nein, leider schon lange nicht mehr... aber junger Vater, da sind die
Nächte manchmal etwas kürzer... ;-)
Jens
--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach
Re: Problem mit regulären Ausdrücken
am 27.09.2006 11:47:52 von Claus Reibenstein
Alex Hepp schrieb:
> und seit wann steht \s auch für ein Backspace od. escape?
Seit wann gehören Backspace und Escape zu Whitespace?
Gruß. Claus
Re: Problem mit regulären Ausdrücken
am 27.09.2006 11:49:42 von Alex Hepp
Jens Riedel schrieb:
> Alex Hepp wrote:
>
>> Noch Student ??? ;)
>
> Oh nein, leider schon lange nicht mehr... aber junger Vater, da sind die
> Nächte manchmal etwas kürzer... ;-)
>
Ich verstehe ;) Kann man ja fast noch gratulieren! ;)
Ich tus jedenfalls! Alles Gute!
gruß Alex
Re: Problem mit regulären Ausdrücken
am 27.09.2006 11:55:46 von Jens Riedel
Alex Hepp wrote:
> Ich verstehe ;) Kann man ja fast noch gratulieren! ;)
Naja, sooo frischgebacken ist das auch nicht mehr... aber immer noch
schlafraubend ;-)
>
> Ich tus jedenfalls! Alles Gute!
Danke!
--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach
Re: Problem mit regulären Ausdrücken
am 27.09.2006 12:07:45 von Mathias Haimerl
Alex Hepp schrieb:
> Claus Reibenstein schrieb:
>> Mathias Haimerl schrieb:
>>
>>> Claus Reibenstein schrieb:
>>>
>>>> 94405 Landau an der Isar
>>>> 93333 Neustadt an der Donau
>>> 94405 Landau/Isar
>>> 93333 Neustadt/Do.
>>
>> Auch die funktionieren beide bei mir problemlos.
>>
>>> aber das seltsame ist, das es jetz funktioniert.
>>
>> Dann würde ich mal auf einen Eingabefehler beim Testen schließen :-)
>
> Hab mir das nochmal angesehen, und frage mich ehrlich gesagt gerade,
> warum spaces im Ort akzeptiert werden, denn [\/\.\(\)a-z] erkennt
> eigentlich nur Buchstaben, Punkt, Slash und Backslash. Woher kommt denn,
> dass auch " " akzeptiert wird?
>
> Oha, und noch was: Das, was Du gerade hast, nimmt auch alles vorher und
> nachher an:
>
> sprich, dass hier klappt auch:
>
> alkjhskdfjhkjdhfkjh04983,Münschhausendorf #+üö-äß´´´´[$a]
>
> usw.
>
> Füge noch ^ am Anfang und $ am Ende ein....
>
> gruß alex
Thx2All
Jetz haut das ding endlich richtig hin.
Re: Problem mit regulären Ausdrücken
am 27.09.2006 15:23:27 von Alex Hepp
Claus Reibenstein schrieb:
> Alex Hepp schrieb:
>
>> und seit wann steht \s auch für ein Backspace od. escape?
>
> Seit wann gehören Backspace und Escape zu Whitespace?
Das hat niemand behauptet, aber der Grund für Dein missverständnis ist
wohl, dass Du die Kommentare auseinanderreisst!
Jens meinte:"Nicht ganz. \s kann auch ein Tab, Zeilenumbruch oder ein
sonstiges nicht-druckbares Zeichen sein."
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Darauf ich: "und seit wann steht \s auch für ein Backspace od. escape?"
compris???
gruß Alex
Re: Problem mit regulären Ausdrücken
am 27.09.2006 15:36:54 von Niels Braczek
Claus Reibenstein schrieb:
> Alex Hepp schrieb:
>=20
>> und seit wann steht \s auch für ein Backspace od. escape?
>=20
> Seit wann gehören Backspace und Escape zu Whitespace?
Die Behauptung war, diese Zeichen seien nicht druckbar. Diese Behauptung
ist wahr.
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------