Regex Frage

Hallo,
ich stehe gerade vor einem kleinen Problem. Ich brauche einen Regex (für PHP und htaccess geeignet), der auf folgendes zutrifft (case insensitive):
  • String besteht nicht aus einem der Wörter abc, 123 und xyz. Müsste doch mit (?!xyz|123|abc) funktionieren?
  • String enthält jedoch eine Zeichenkette, die nur aus [A-Z0-9._\-]+ besteht.
  • Das alles brauche ich dann natürlich als Backreference...
Zusammengefasst: Der String muss aus den Zeichen [A-Z0-9._\-]+ bestehen, darf aber nicht nur aus einem der drei genannten Wörter bestehen.

Beispiel, akzeptierte Strings:
  • /blah/irgendwas-zum-testen
  • /blah/noch.etwas.dummes
  • /blah/blah_123

Beispiel, nicht akzeptierte Strings:
  • /blah/123
  • /blah/xyz
  • /blah/abc

Ich stehe gerade irgendwie auf der Leitung, denn ich weiß nicht, wie ich das lösen soll. Ist das mit einem einzigen RegEx überhaupt möglich? Oder muss ich zwei verschiedene verwenden? Für jeden Denkanstoß wäre ich dankbar :o


MfG Christian
 
Last edited by a moderator:
  • String enthält nicht eines der Wörter abc, 123 und xyz. Müsste doch mit (?!xyz|123|abc) funktionieren?

Beispiel, akzeptierte Strings:
  • /blah/blah_123
Da stimmt wohl was nicht, das ist nicht miteinander vereinbar. ;) Du meintest, dass der String nicht ausschließlich aus einem der drei Wörtern bestehen darf, oder?
 
Entschuldige, ja natürlich, ich hab mich falsch ausgedrückt :D
Ich habe es im ersten Beitrag einmal korrigiert.

EDIT: Ich habe es jetzt vorerst einmal mit zwei verschiedenen regulären Ausdrücken gemacht, falls es doch mit nur einem geht, wäre es natürlich super.


MfG Christian
 
Last edited by a moderator:
Also ich fürchte, dass es nur mit zweien geht, weil die Regexp ja keinen AND-Operator kennen. Und soweit ich das seh, ist das nur über so eine Konstellation möglich.
 
Back
Top