Problem mit Regular Expression
Problem mit Regular Expression
am 21.06.2006 13:15:42 von Sebastian Deiszner
Hallo,
ich prüfe die Variable "telefon" auf ungültige Buchstaben.
Ich würde gern auch ein false bekommen, wenn die Variable "telefon" leer ist - am besten in die Regex eingebaut.
Wie mache ich das?
gruß
Sebastian
if(preg_match('~[^-\s\d./()+]~', $telefon)){
Re: Problem mit Regular Expression
am 21.06.2006 13:37:45 von Jens Riedel
Sebastian Deiszner wrote:
> ich prüfe die Variable "telefon" auf ungültige Buchstaben.
>
> Ich würde gern auch ein false bekommen, wenn die Variable "telefon" leer
> ist - am besten in die Regex eingebaut.
>
> Wie mache ich das?
Indem du aus deiner negativen Bedingung die umgekehrte positive machst
und dann ein + anhängst.
> if(preg_match('~[^-\s\d./()+]~', $telefon)){
Wird dann zu
if(preg_match('~^[-\s\d./()+]+$~', $telefon)){
(ungetestet)
Gruß,
Jens
--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach
Re: Problem mit Regular Expression
am 22.06.2006 11:55:56 von Sanynome
Sebastian Deiszner wrote:
> Hallo,
>
> ich prüfe die Variable "telefon" auf ungültige Buchstaben.
>
> Ich würde gern auch ein false bekommen, wenn die Variable "telefon" lee=
r ist - am besten in die Regex eingebaut.
>
> Wie mache ich das?
>
> gruß
>
> Sebastian
>
> if(preg_match('~[^-\s\d./()+]~', $telefon)){
was soll ~ sein?
- ist auch falsch
.. ist ne wildcard also muss escaped werden
/ muss auch escaped werden
( auch
) auch
+ auch
also
preg_match('/[^\-\s\d\.\/\(\)\+]/', $telefon)
.....
Re: Problem mit Regular Expression
am 22.06.2006 12:10:35 von Frank Schenk
Hallo Sanonyme,
Sanynome@gmail.com wrote:
^^^^^^^^^^^^^^^^^^
hier werden Realnames bevorzugt.
>>if(preg_match('~[^-\s\d./()+]~', $telefon)){
>
>
> was soll ~ sein?
Der Handbuchvorlesedienst:
The expression should be enclosed in the delimiters, a forward slash
(/), for example. Any character can be used for delimiter as long as
it's not alphanumeric or backslash (\). If the delimiter character has
to be used in the expression itself, it needs to be escaped by backslash.
Quelle:
http://de2.php.net/manual/en/ref.pcre.php
> - ist auch falsch
> . ist ne wildcard also muss escaped werden
> / muss auch escaped werden
> ( auch
> ) auch
> + auch
[ ] Du hast erkannt, daß diese Zeichen in einer Character Class stehen.
Siehe Handbuch:
Part of a pattern that is in square brackets is called a "character
class". In a character class the only meta-characters are:
\
general escape character
^
negate the class, but only if the first character
-
indicates character range
]
terminates the character class
Quelle:
http://de2.php.net/manual/en/reference.pcre.pattern.syntax.p hp
>
> also
>
> preg_match('/[^\-\s\d\.\/\(\)\+]/', $telefon)
Das ist leider Mumpitz.
gruß, Frank
Re: Problem mit Regular Expression
am 22.06.2006 12:17:12 von Carsten Wiedmann
Sanynome@gmail.com schrieb:
> Sebastian Deiszner wrote:
> >
> > if(preg_match('~[^-\s\d./()+]~', $telefon)){
>
> was soll ~ sein?
> - ist auch falsch
> . ist ne wildcard also muss escaped werden
> / muss auch escaped werden
> ( auch
> ) auch
> + auch
>
> also
>
> preg_match('/[^\-\s\d\.\/\(\)\+]/', $telefon)
Ohne mich jetzt mit dem Pattern wirklich auf Funktion zu beschäftigen:
- `~' ist der Patternbegrenzer
- ein `-' an erster Stelle muss innerhalb einer Zeichenklasse nicht maskiert
werden
- ein `.', `/', `(', `)' oder `+' muss in einer Zeichenklasse generell nicht
maskiert werden
Allerdings: diese Zeichen müssen hier nicht maskiert werden, man kann es
aber, so dass die zwei Pattern im Endeffekt identisch sind.
Gruß
Carsten