RegEx muss mindestens 3 Buchstaben
Ich versuche, erstellen Sie einen Ausdruck, um zu überprüfen, ob eine Antwort hat mindestens drei Buchstaben. Zahlen, Leerzeichen und alle anderen Zeichen sind ungültig. Was habe ich unten funktioniert nur, wenn ein Sonderzeichen kommt nicht zuerst.
(?=(.*[a-zA-Z]){3,})^[a-zA-Z0-9].+$
- Das ist, weil ^ bedeutet 'beginnt mit'. Haben Sie ein Beispiel, das Sie testen vor?
- Welche Sprache?
- Dies wäre eine gültige Antwort. "* 3 von uns."
- Der erste Teil des Ausdrucks hat alles, was Sie brauchen. Aber ich möchte hinzufügen, ein lazy Modifikator effizienter zu machen, zum Beispiel so:
(.*?[a-zA-Z]){3,}
- Das funktioniert perfekt, vielen Dank für Ihre Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine viel einfachere regex:
([a-zA-Z].*?){3}
Dies entspricht einem Buchstaben, Optional gefolgt von weiteren Zeichen, drei mal wiederholt.
^
zu verlangen, dass die übereinstimmung vom Anfang der Zeichenfolge.Entspricht (ein Buchstabe, gefolgt von einem nicht-Briefe) 3 mal. Die
(?:)
macht es ein wenig effizienter, da die regex-engine nicht erfassen.Natürlich wäre es einfacher zu Lesen und zu verstehen, ohne die regex. Hier ist C#/linq-Beispiel.
Meine Lösung:
(.*[a-zA-Z].*){3}
Es ist ziemlich ähnlich wie @Hose, der Unterschied ist, dass mein code funktioniert, wenn Sie alphanumerische Zeichen eingeschlossen in Sonderzeichen wie
<script>
.@ridgerunner hat eine saubere Lösung, aber wenn das Ende der Zeichenfolge ein Sonderzeichen wird es nicht passen. Sehen Sie das Beispiel in diesem Bild: