jqueryでは正則でパスワードを検証するには、大文字と小文字、数字、特殊記号、または少なくとも2種類を含む必要があります.

2579 ワード

私たちはウェブ開発で、ユーザーが入力した内容と提出した内容を検証するために正則をよく使うので、駅長もよく使いやすい正則表現を収集して整理しています.記録と整理はもともと学習過程の一部ですが、今日ネット上で正則を聞いている人がいて、自分で書いて、みんなと共有しています.
一:ユーザーが入力したパスワードを正則で検証する必要があります.少なくとも大文字、数字、特殊記号の2種類が含まれています.簡単に言えば、ユーザーが入力したパスワードを検証するのは簡単ではありません.
一見すると、この正則は手書きには不便なようですが、少なくとも以前は駅長がユーザーが入力したパスワードのフォーマットを検証する際に、段階的に書いていました.例えば、
if(/[a-z]/g.test(v)){
    alert("        ");
    return false;
}else if(/[A-Z]/g.test(v)){
    alert("        ");
    return false;
}else if(/[0-9]/g.test(v)){
    alert("      ");
    return false;
}else if(/[^0-9a-zA-Z]/g.test(v)){
    alert("               ");
    return false;
}

今では技術が以前よりよくなったので、「なくしたら」、一言の正則で実現できるかどうか考えています.もちろんいいです.以下は具体的な正則です.
var v=$("#text").val();
reg=/^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{6,}$/;
alert(reg.test(v));

上の正則表現は、純粋な数字ではなく、純粋な小文字ではなく、純粋な大文字ではなく、純粋な特殊な記号ではなく、少なくとも6桁であることを意味します.
少し複雑に見ないでください.実は簡単です.駅長が分解して分析してください.
(?!) これは正則の中の1つの“文法の構造”で、“規定の後でそうではありません”の意味を表して、この《jquery正則の中で疑問符の3種類の[4種類を言ってそれは人をからかうのです]の用法の詳しい解とオンラインの実例のプレゼンテーションを見ます
上の文を理解すれば、上の正則は理解できます.
(?![0-9]+$)は、後に純粋な数字ではないことを示します.
(?![a-z]+$)は、後に純粋な小文字を書くことができないことを示します.
(?![A-Z]+$)は、後ろが純粋な大文字(?!([^(0-9 a-zA-Z)])+$)ではなく、後ろが数字とアルファベットを除く純粋な特殊記号であることを示します^この記号は単独で「冒頭」を表し、中括弧の冒頭で「非」を表します.
.{6,}は少なくとも6ビットの任意の文字を表す
$は「終わり」を表す
もう一つのケースは、パスワードが「アルファベット+数字+特殊記号」でなければならない場合がありますが、どう書くのでしょうか.
(?![0-9a-z]+$)           
(?![0-9A-Z]+$)           
(?![0-9\W]+$)            
(?![a-z\W]+$)              
(?![A-Z\W]+$)              
(?![0-9a-zA-Z]+$)      ,       

この3つのケースを加えると、「数字、大文字、特殊記号を含まなければならない」というケースしか残っていませんが、私たちも超長い正則を得ました.ここでは書きません.
では、簡単な方法はありませんか.もちろんあります.
var v=$("#text").val();
reg=/^(?=.*[a-zA-Z])(?=.*[1-9])(?=.*[\W]).{6,}$/;
alert(reg.test(v));

(?=)この文法構造は正則的に「設定後は」という意味を表す.
(?=.*[a-zA-Z])この文の意味は、後ろに大文字または小文字が必要です.
(?=.*[1-9])この文の意味は後ろに数字が必要だということです.
(?=.*[W])この文の意味は、後にアルファベット以外の数字と下線の特殊な記号が必要であることを意味します.
 
上記の正規検査は実際の使用では全角記号が多く検証に失敗する問題に遭遇するため,最後にプロジェクトで特殊記号の範囲を限定するように変更した.暗号の特殊な記号は解読を防ぐためだと思っているので、よく使われる特殊な記号で十分です.私たちが最後に限定した特殊な記号の範囲は!@#$%^&*これら.そこで正則的に表現した書き方は以下の通りです.
var v=$("#text").val();
reg=/^(?=.*[a-zA-Z])(?=.*[1-9])(?=.*[!|@|#|$|%|^|&|*]).{6,}$/;
alert(reg.test(v));

上記の構成の最後の(?=.*[!|@|||#|$|%|^|&|*])は、1つ必要であることを示しています!@#$%^&*のいずれかを選択し、縦線は正則で複数の中から1つを選択することを示します.このように範囲を限定することで、他の全角、html所定文字などのエスケープによる列の問題を回避することができる.