Regulärer Ausdruck

Metha

Mitglied
Moin Moin,

ich versuche bislang erfolglos eine spezielle RegExp zu bauen.

Diese Stings sollen erlaubt sein:
Code:
bla-bla_40
(Also mix aus Zahlen, Buchstaben und Binde- u. Unterstrichen. Und es darf kein String aus nur zwei Buchstaben sein. Also ein Buchstabe ist erlaubt und ab drei Buchstaben, Zahlen und Binde- u. Unterstrichen ist er wieder erlaubt.)

Das soll negiert werden:
Code:
234
213-455
(Also nur Zahlen + eventuell Bindestrichen)

Mein Ansatz:
Code:
"/(^[a-z]{1}$|^[a-z0-9\_\-]{3,}$)/i"

Problem ist nur, das dabei eben auch die oben beschriebenen negierten Bereiche akzeptiert werden. Mit dem ^ in Charakterklassen habe ich schon rumgespielt, aber nichts zu stande bekommen.

Gruß Metha
 
Ich post mal nur in Auszügen, da bei mir mehrere Klassen dahinter hängen.

Folgendes Array:
Code:
    [0] => de
    [1] => asd
    [2] => a
    [3] => 988-9878
    [4] => 82-734
    [5] => as
    [6] => 345
    [7] => 1
    [8] => bla5_asd

Das wird jeweils durchlaufen. Also wird dann jedes Element also Sting vergleich.

Nun will ich mit meinem Ausdruck folgende Elemente bekommen:
Code:
    [1] => asd
    [2] => a
    [8] => bla5_asd

auf die Anderen soll der Ausdruck nicht zutreffen! Mein Problem ist bislang halt nur, das ich auch Zahlen mit oder ohne Bindestrich bekomme.

Andere Abfragen funktionieren ja auch schon. Zum Beispiel:
Code:
"/^([a-z]{2})$/i"

Gibt nur:
Code:
    [0] => de
    [5] => as
zurück.
 
Würde es nicht reichen zu prüfen, ob die Zeichenkette nicht nur aus Zahlen und Binde-/Unterstrichen besteht oder nur aus zwei Buchstaben?
Code:
^(?:[a-z]{2}|[0-9-_]+)$
 
Hmm, hab ich so auch nocht nicht dran gedacht - Geht bei meinem Projekt leider nicht, da mit der Zeit das Array wächst. Also es werden immer mehr Strig-Variationen kommen ...
 
Habe en nun doch hinbekommen!

Hier die Lösung:
Code:
"/(^[a-z]{1}$|^([a-z]+[0-9]*[\_\-]*){3,}$)/i"

Danke für die Hilfe
 
Zurück