close

 

功能說明 : 必須包含 英文 大/小 寫 , 數字 , 8-30 字元

語法 :

HTML

 <input type="password" name="np" id="np" class="content_text" />
 <input type="button" value="send" onclick="btclick()" />

Javascript

<script type="text/javascript">
function btclick(){
    if (!((document.getElementById("np").value).match(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,30}$/))){
        alert( "your password : "+document.getElementById("np").value );
    }
}
</script>

 

 

語法說明 ( 來源 : Will , 實在解釋的不錯)

利用 match 和正規表示式 來進行驗證
值得注意的就是 (?=.*\d) 這段語法,這段於法又稱做「右合樣 (Positive Lookahead)」,右合樣(或左合樣)語法所佔用的寬度為 0,也就是說這段語法本真不會佔用比對的字元,僅僅只是 Regular Expression 中的一種「判斷式」而已,右合樣 (Positive Lookahead)會判斷右邊緊接著的字元是否符合比對條件,如果符合條件才會繼續比對下去。

所以剛剛這段於法的解釋大致可以這樣說明:

(?=.*\d) 與 (?=.*[a-z]) 與 (?=.*[A-Z]) 寬度都會是零,所以整個字串比對會以 .{8,30} 為主,但比對之前會分別比對 (?=.*\d) 與 (?=.*[a-z]) 與 (?=.*[A-Z]) 這三個判斷式,都判斷成功才會進行 .{8,30} 的比對。所以 (?=.*\d) 的 .*\d 就是說右邊的文字中一定要出現一個數字符號,(?=.*[a-z]) 的 .*[a-z] 就是說右邊的文字中一定要出現一個小寫字母,(?=.*[A-Z]) 的 .*[A-Z] 就是說右邊的文字中一定要出現一個大小字母,最後才會比對 .{8,30} 也就是說比對字串的長度必須在 8 ~ 30 個字的任意字元。

arrow
arrow
    文章標籤
    javascript 密碼驗證
    全站熱搜

    jason0324 發表在 痞客邦 留言(1) 人氣()