Ich möchte Benutzernamen nach diesem Schema validieren:
Dieser reguläre Ausdruck erfüllt die obigen 1 und 2, aber ich kann nicht herausfinden, wie man 3 erfüllt:
%Vor%(Ich verwende Ruby, wenn das relevant ist)
Nicht sehr effizient, aber einfach:
/^(?!\d+$)[a-zA-Z\d][\w\-]+$/
Der Lookahead bedeutet einfach: "Was folgt, ist keine Folge von Zahlen, die bis zum Ende weitergehen".
Nicht ideal, aber einfach: Verwenden Sie einen zweiten Durchlauf mit dem Regex /^.*[a-zA-Z_\-].*$/
Stellen Sie einfach sicher, dass es beides passiert und Sie werden in Ordnung sein.
Wenn Sie mit zwei Durchgängen gehen können, ist ein einfacherer und schnellerer Regexp für den zweiten Durchlauf:
%Vor%Dies passt nur zu allem, was keine Zahl ist, und es muss nur eins übereinstimmen und es endet früh. Sie müssen hier nicht wirklich streng sein, da der erste Durchgang nicht zulässige Zeichen bereits zurückweist.