今回は、パスワードの強度を確認するために正規表現を使用する場合の注意事項と、パスワードの強度を確認する場合に正規表現を使用する場合の
注意事項を紹介します。以下は実際的なケースです。見てみましょう。
はじめに
ユーザー登録の際、パスワードの正規性検証が行われます。正しい
正規表現を作成するには、まず式のルールを定義する必要があります。 オプション 1 (単純)
上記のルールに従って、規則的なものを与えるのは簡単ですリテラル定義 次のように: var pattern = /^[\w_-]{6,16}$/;
Literal/ /
正規表現のリテラルは、1 組のスラッシュ (/) の間に含まれる文字として定義されます。例:
var pattern = /s$/;
上記リテラル 文字「s」で終わる任意の文字列と一致します。
文字クラス [ ]文字を角括弧で囲んで文字クラスを形成します。文字クラスは、それに含まれる任意の文字と一致します。したがって、正規表現 /[abc]/ は、文字「a」、「b」、または「c」のいずれかと一致します。 文字クラスでは、ハイフンを使用して
文字範囲を表すことができます。ラテン語の小文字と一致させるには、 /[a-z]/ を使用します。
文字クラス w文字クラス w は、[a-zA-Z0-9] に相当する、ASCII 文字で構成される任意の単語に一致します。
[w_-] は、ラテン語の大文字と小文字、数字、アンダースコア、マイナス記号と一致することを意味します。
Repeat {}[w_-]{6,16} は、少なくとも 6 回、最大で 16 回出現するラテン語の大文字と小文字、数字、アンダースコア、マイナス記号と一致することを意味します。
位置の一致
^ 複数行検索の場合は文字列の先頭に一致し、行の先頭に一致します
/^w/ は、大文字、小文字、または数字で始まる文字列に一致します。 プラン1のテスト
テスト結果は以下の通りです:
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;
ソースコードを見る
テスト結果によると、プラン1はパスワードを一時的に制限するだけで、強度を保証できないことがわかりますパスワードとアカウントのセキュリティ。 オプション 2 (セキュリティ)
var pattern = /^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[!@#$%^&*?\(\)]).*$/;
Character class.
Character クラス 改行およびその他の 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;
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上が正規表現を使用してパスワードの強度を確認するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。