Dieses Mal werde ich Ihnen die Vorsichtsmaßnahmen für die Verwendung regulärer Ausdrücke zur Überprüfung der Passwortstärke vorstellen. Hier sind einige praktische Fälle.
Vorwort
Wenn sich Benutzer registrieren , wird die Passwort-Regularisierung getestet . Um einen korrekten regulären Ausdruck zu schreiben, müssen Sie zunächst die Ausdrucksregeln definieren.
Option 1 (einfach)
Angenommen, die Passwortüberprüfung ist wie folgt definiert:
Kürzeste 6 Ziffern, bis zu 16 Ziffern {6,16}
kann Kleinbuchstaben [a-z] und Großbuchstaben [A-Z] enthalten
Kann Zahlen [0-9] enthalten
Kann Unterstriche [_] und Minuszeichen [-] enthalten
Gemäß den oben genannten Regeln, Es ist einfach. Die reguläre Literaldefinition lautet wie folgt:
var pattern = /^[\w_-]{6,16}$/;
Lösung 1 Analyse
Literal //
regulär Ausdruck Ein Literal ist als ein zwischen zwei Schrägstrichen (/) eingeschlossenes Zeichen definiert, zum Beispiel:
var pattern = /s$/;
Das obige Literal entspricht jeder Zeichenfolge, die mit dem Buchstaben „s“ endet.
Zeichenklasse [ ]
Setzen Sie Zeichen in eckige Klammern, um eine Zeichenklasse zu bilden. Eine Zeichenklasse kann mit jedem darin enthaltenen Zeichen übereinstimmen. Daher entspricht der reguläre Ausdruck /[abc]/ jedem der Buchstaben „a“, „b“ oder „c“.
Zeichenklassen können Bindestriche verwenden, um Zeichenbereiche darzustellen. Um lateinische Kleinbuchstaben zuzuordnen, verwenden Sie /[a-z]/ .
Zeichenklasse w
Die Zeichenklasse w entspricht jedem Wort, das aus ASCII-Zeichen besteht, äquivalent zu [a-zA-Z0-9].
[w_-] bedeutet die Übereinstimmung aller lateinischen Groß- und Kleinbuchstaben, Zahlen sowie Unterstriche und Minuszeichen.
Wiederholen {}
Verwenden Sie { } in regulären Ausdrücken, um die Anzahl der Wiederholungen eines Elements darzustellen.
{n,m} entspricht dem vorherigen Element mindestens n-mal, jedoch nicht mehr als m-mal.
{n,} entspricht dem vorheriges Element n-mal oder öfter
{n} stimmt n-mal mit dem vorherigen Element überein
[w_-]{6,16} bedeutet, dass alle lateinischen Groß- und Kleinbuchstaben, Zahlen sowie Unterstriche und Minuszeichen mindestens 6 Mal und höchstens 16 Mal vorkommen.
Passen Sie die Position an
^ Passen Sie den Anfang der Zeichenfolge an, bei der mehrzeiligen Abfrage den Anfang einer Zeile.
$ Passen Sie das Ende der Zeichenfolge an , in mehreren Zeilen. Passen Sie beim Abrufen das Ende einer Zeile
/^w/ an und suchen Sie nach Zeichenfolgen, die mit Groß- und Kleinbuchstaben oder Zahlen beginnen.
Option 1-Test
Die Testergebnisse lauten wie folgt:
var pattern = /^[\w_-]{6,16}$/; pattern.test('123456') = true; pattern.test('-ifat33') = true; pattern.test('42du') = false; pattern.test('du42du42du42du421') = false; pattern.test('42du42@') = false;
Quellcode anzeigen
Laut Test lässt sich aus den Ergebnissen erkennen, dass Lösung 1 das Passwort nur kurzzeitig einschränkt und die Stärke des Passworts sowie die Sicherheit des Kontos nicht garantieren kann.
Option 2 (Sicherheit)
Angenommen, die Passwortüberprüfung ist wie folgt definiert:
Kürzeste 6 Ziffern, bis zu 16 Ziffern {6,16}
muss 1 Zahl enthalten
muss 2 Kleinbuchstaben enthalten
muss 2 Großbuchstaben enthalten
muss 1 Sonderzeichen enthalten
Gemäß Mit den oben genannten Regeln lässt sich die Definition regulärer Literale leicht wie folgt angeben:
var pattern = /^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[!@#$%^&*?\(\)]).*$/;
Szenario 2-Analyse
Zeichenklasse .
Zeichenklasse Stellt jedes Zeichen außer Zeilenumbrüchen und anderen Unicode-Zeilenabschlusszeichen dar.
Forward-Lookahead-Behauptung (?= )
在符号“(?=” 和 “)” 之间加入一个表达式,它就是一个先行断言,用以说明圆括号内的表达式必须正确匹配。比如: /Java(?=\:)/ 只能匹配Java且后面有冒号的。
(?=.*[!@#$%^&*?\(\)])
该先行断言表示,必须包括一个特殊字符。上述表达式中的10个特殊字符为键盘1,2...0的上档键字符,也可以添加别的特殊字符。注意:如果添加字符是正则表达式中具有特殊含义的,需要在符号前加反斜线(\)转义。
方案2测试
给出测试结果如下:
var pattern = /^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[!@#$%^&*?\(\)]).*$/; pattern.test('du42DU!') = true; pattern.test('duDUd!') = false; pattern.test('42dud!') = false; pattern.test('42DUD!') = false; pattern.test('42duDU') = false; pattern.test('42duU(') = false; pattern.test('42dUU!') = false;
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Das obige ist der detaillierte Inhalt vonVerwenden Sie reguläre Ausdrücke, um die Passwortstärke zu überprüfen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!