Regulärer Ausdruck für die Überprüfung der Kennwortstärke

Ich habe einen regulären Ausdruck geschrieben, der möglicherweise zur Überprüfung der Kennwortstärke verwendet werden kann:

^(?:([A-Z])*([a-z])*(\d)*(\W)*){8,12}$

Der Ausdruck besteht aus vier Gruppen:

Null oder mehr GroßbuchstabenNull oder mehr KleinbuchstabenNull oder mehr DezimalstellenNull oder mehr Nicht-Wort-Zeichen (!, £, $,% usw.)

Ich möchte, dass es funktioniert, indem ich feststelle, wie viele der Gruppen übereinstimmen, um die Stärke des Kennworts zu bestimmen. Wenn also zum Beispiel nur eine Gruppe übereinstimmt, ist sie schwach. Wenn alle vier Gruppen zusammenpassen würden, wäre es stark.

Ich habe den Ausdruck mit getestetRubular (ein Ruby-Editor für reguläre Ausdrücke).

Hier kann ich visuell sehen, wie viele Gruppen übereinstimmen, aber ich möchte dies in JavaScript tun. Ich habe ein Skript geschrieben, das die Anzahl der übereinstimmenden Gruppen zurückgibt, aber die Ergebnisse waren nicht die gleichen wie in Rubular.

Wie kann ich das in JavaScript erreichen? und ist mein regulärer Ausdruck der Aufgabe gewachsen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage