2016-04-11 19 views
1

Ich brauche Regex, das prüft, ob String mindestens 3 Großbuchstaben, 3 Kleinbuchstaben und mindestens ein Sonderzeichen hat.Regex mit 3 Groß- und Kleinbuchstaben

Zur Zeit habe ich dies:

^(?=.*[a-z]{3,})(?=.*[A-Z]{3,})(?=.*\d)(?=.*(_|[^\w])).+$ 

Aber es funktioniert nur, wenn die Zeichen einander nächsten sind.

Beispiel von dem, was es passen sollte:

S4L4S6na#a 

Antwort

3

Dies wird

arbeiten
(?=(.*[A-Z]){3})(?=(.*[a-z]){3})(?=.*(_|[^\w])) 

Wenn Sie auch wollen Ziffer

(?=.*\d)(?=(.*[A-Z]){3})(?=(.*[a-z]){3})(?=.*(_|[^\w])) 

Regex Demo

enthalten

Eine weitere Optimierung gemäß Kommentare

Sie non-greedy Ansatz verwenden können, die die oben regex und verwenden [\W_] statt (_|[^\w])

(?=(.*?[A-Z]){3})(?=(.*?[a-z]){3})(?=.*?[\W_]) 

Reason for alternation being slower than character class

+2

ich Sie optimiert ** denken ** Ich bekomme bessere Leistung, wenn Sie '. *' * nicht gierig machen. I.e. '. *?'. (Wahrscheinlich kein Problem, aber ...;) – ClasG

+0

@ClasG yeah..das kann gut sein..will später aktualisieren – rock321987

+0

Danke, das funktioniert. – user3482304

Verwandte Themen