Heim > Web-Frontend > js-Tutorial > Hauptteil

Überprüfen Sie den vom Benutzer festgelegten regulären Ausdruck für die Passwortstärke

php中世界最好的语言
Freigeben: 2018-03-29 10:29:35
Original
4427 Leute haben es durchsucht

Dieses Mal bringe ich Ihnen den regulären Ausdruck zur Überprüfung der vom Benutzer festgelegten Passwortstärke. Was sind die Vorsichtsmaßnahmen zur Überprüfung des regulären Ausdrucks für die vom Benutzer festgelegte Passwortstärke? Benutzer Das Folgende ist ein praktischer Fall.

Dieser Artikel beschreibt zwei reguläre Ausdrucksschemata für die Passwortstärke, eines einfach und eines komplexer und sicherer. Außerdem werden die Analyse- und Testverfahren der beiden Lösungen angegeben. Im Allgemeinen können Sie Ihre eigenen regulären Passwortkonventionen basierend auf den tatsächlichen Anforderungen Ihres Projekts definieren.

Vorwort

Wenn sich Benutzer registrieren , wird die Passwort-Regularisierung getestet . Um korrekte reguläre Ausdrücke zu schreiben, müssen Sie zunächst 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 Definition regulärer Literale lautet wie folgt:

var pattern = /^[\w_-]{6,16}$/;
Nach dem Login kopieren

Analyse von Lösung 1

Literal / /

Regulärer Ausdruck Ein Literal ist definiert als ein Zeichen, das zwischen einem Paar Schrägstriche (/) enthalten ist, zum Beispiel:

var pattern = /s$/;
Nach dem Login kopieren

Das obige Literal stimmt mit allen Zeichenfolgen überein, die mit dem Buchstaben „s“ enden.

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;
Nach dem Login kopieren

Quellcode anzeigen

Den Testergebnissen zufolge lässt sich 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,})(?=.*[!@#$%^&*?\(\)]).*$/;
Nach dem Login kopieren

方案2分析

字符类 .

字符类 . 表示除换行符和其他Unicode行终止符之外的任意字符。

正向先行断言 (?= )

在符号“(?=” 和 “)” 之间加入一个表达式,它就是一个先行断言,用以说明圆括号内的表达式必须正确匹配。比如: /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;
Nach dem Login kopieren

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

Vue.js自定义事件如何进行表单输入组件

Vue用下表修改数组时页面不渲染如何处理

Das obige ist der detaillierte Inhalt vonÜberprüfen Sie den vom Benutzer festgelegten regulären Ausdruck für die Passwortstärke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!