2016-10-26 4 views
0

Wie kann ich prüfen, ob eine gegebene Zeichenkette X Großbuchstaben, Y Ziffern und Z Nicht-Wortzeichen enthält? Diese Nummern müssen in der Regex definiert werden können.Nach X-Instanzen in einer Regex suchen

So zum Beispiel

hereisMy1String

Ist es enthält: 2 Ziffern (oder jede beliebige Zahl), 2 Kapitelle (oder jede beliebige Zahl) und ein nicht Wortzeichen (oder mehrere)?

Die Zahlen/Buchstaben/Zeichen können sich an einer beliebigen Position innerhalb der Zeichenfolge befinden.

+0

Sie brauchen so etwas wie '^ (= (?:? \ D * \ d) {2}) (= (?:? [^AZ] * [AZ]) {2}) (? = (?: \ W * \ W) {1}) ' –

+0

Es hängt davon ab, was du mit" nicht arbeiten "meinst - http://ideone.com/ 91izLw. Die von Ihnen angegebene Zeichenfolge enthält keine Nicht-Wort-Zeichen. –

+0

Dies ist ein klassischer Fall, tun Sie es nicht in einem einzigen Ausdruck. Der Code wird millionenfach einfacher zu lesen, wenn Sie nicht versuchen, ihn zu erzwingen. –

Antwort

0

Am Ende der Antwort, die gearbeitet wurde:

#(?=(\D*\d){2})(?=([^A-Z]*[A-Z]){2})(?=([^\W_]*[\W_]){1})#

Verwandte Themen