Pregunta
Ich möchte in der Lage sein, eine einzige Regex (wenn möglich) zu verwenden, um zu verlangen, dass eine Zeichenfolge passt [A-Za-z0-9_]
aber nicht zulässt:
- Zeichenketten, die nur Zahlen oder/und Symbole enthalten.
- Zeichenketten, die mit Symbolen beginnen oder enden
- Mehrere Symbole nebeneinander
Gültig
test_0123
t0e1s2t3
0123_test
te0_s1t23
t_t
Ungültig
t__t
____
01230123
_0123
_test
_test123
test_
test123_
Gründe für die Regeln
Der Zweck ist, Benutzernamen für eine Website zu filtern, an der ich arbeite. Ich habe mir die Regeln aus bestimmten Gründen zurechtgelegt.
-
Benutzernamen, die nur aus Zahlen und/oder Symbolen bestehen, können zu Problemen bei der Weiterleitung und bei Datenbankabfragen führen. Die Route für
/users/#{id}
ermöglichtid
entweder die Benutzerkennung oder der Name des Benutzers sein. Namen und IDs sollten also nicht kollidieren können. -
_test
sieht seltsam aus, und ich glaube nicht, dass es sich um eine gültige Subdomain handelt, d. h._test.example.com
-
Ich mag das Aussehen von
t__t
als Subdomäne, d.h.t__t.example.com