![]() |
kleines REGEX-Problem
Hallo!
Ich möchte einen String in PHP auf eine Anzahl zulässiger Zeichen prüfen. Bei Vorhandensein eines nicht gültigen Chars soll abgebrochen werden. Erlaubt sind: 0-9 a-z _ (Unterstrich) . (Punkt) - (Minus) Meine Versuch dazu: PHP-Code:
Kann mir jemand helfen? tia Roland |
Ohne jetzt groß nachzudenken:
Angenommen es sind nur die Zeichen a und b erlaubt. test .*[ab].* = Zeichen a oder b kommen vor, die anderen sind völlig frei. !test .*[ab].* = Es kommt weder a noch b vor. test .*[^ab].* = Es kommen Zeichen vor, die weder a noch b sind. Daher möchtest du die dritte Variante nehmen. lg paux |
Einen Punkt "." repäsentiert in einer Regex zumeist ein beliebiges Zeichen, daher muss er im Regelfall mit einem Backslash "\" escaped werden.
Also Code:
[_\.0-9a-z-] |
verh****:
den "\" vor dem Punkt habe ich eh gemacht. Mir schleierhaft, wo der abgeblieben ist. |
Also bei mir (perl) hat er mit
Code:
if( $file =~ /[^_\.0-9a-z-]/gi) |
hm, die lösung hab ich jetzt so gefunden:
!preg_match("/^[0-9a-zA-Z_\.-]*$/",$filename) Das scheint zu funzen! Es lebe google-groups ;) Danke für eure Zeit! Roland |
Wäre es mit
Code:
preg_match("/[^0-9a-zA-Z_\.-]/",$filename) |
@kingchaos01: Das Dacherl gehört wohl in die Klammer, so wie ich es angegeben hatte. Außerdem ist mir nicht klar wieso du das preg_match ver-nicht-est. Du wollst ja testen OB Zeichen vorkommen die NICHT erlaubt sind?
|
[scheißdreck]
|
hm, ich seh das so:
die regex liefert true, wenn *nur* die werte vom pattern enthalten sind. bei verneinung springt "die" an. also "if not true, springe in die condition". |
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag