Ich habe ein wenig recherchiert, aber ich habe nichts gefunden, was genau mit dem zusammenhängt, was ich brauche und wann immer ich versucht habe, den Ausdruck zu schaffen, ist es immer etwas abseits von dem, was ich brauche.
Ich habe etwas in der Art von [AZaz09]{3,8}\-[AZaz09]{3,8}
versucht.
Ich möchte, dass das gültige Ergebnis nur Text-Text erlaubt, wobei entweder der Text alphabetisch oder numerisch sein kann, aber das einzige erlaubte Symbol ist -
und das ist zwischen den beiden Texten.
Jeder Text muss mindestens drei Zeichen lang sein ({3,8}?), dann getrennt durch -
.
Damit es gültig ist, könnten einige Beispiele sein:
%Vor%Ungültige Tests könnten sein:
%Vor% Sie müssen Anker verwenden und -
verwenden, damit die Zeichen in der Zeichenklasse als Bereich gelesen werden, nicht die einzelnen Zeichen.
Versuchen Sie:
%Vor%Demo: Ссылка
Sie können es auch vereinfachen, aber mit dem% -Modifizierer i
und dem% meta-Zeichen \d
.
Wenn akzentuierte Buchstaben zulässig sein sollen oder ein anderer Buchstabe im Unicode-Bereich (wie griechische oder kyrillische Buchstaben), verwenden Sie die u
Modifikator (für UTF-8-Unterstützung) und \pL
entspricht Unicode-Buchstaben (und \d
für Ziffern):
Ausgabe:
%Vor% Hinweis: Der Unterschied zu \w
ist, dass [\pL\d]
nicht mit einem Unterstrich übereinstimmt.
Du könntest folgendes erfinden:
%Vor% Wie @ chris85 darauf hingewiesen hat, wird auch \w
mit einem Unterstrich übereinstimmen. Trincot hatte einen guten Kommentar (also passende Akzentbuchstaben). Um dies zu erreichen, verwenden Sie einfach den Modifizierer u
.
Siehe eine Demo auf regex101.com und eine vollständige Code auf ideone.com .
Und ein kurzer.
%Vor%[^\W_]
kann als Abkürzung für alnum verwendet werden. Es subtrahiert den Unterstrich von \w
(?1)
ist ein Unterprogrammaufruf für das Muster in der ersten Gruppe Meine Stimme für @ chris85, die am offensichtlichsten und performant ist.