jquery裏用正則來驗證密碼,必須包含大小寫字母,數字及特殊符號,或最少包含兩種

原文鏈接:http://www.aijquery.cn/Html/jqueryjiqiao/200.html

我們在web開發中,經常會用到正則來驗證用戶所輸入和提交的內容,所以站長也會經常收集和整理一些好用的正則表達式,記錄和整理本來就是學習過程中的一部分,今天在網上看到有人在詢問一個正則,就自己寫了一下,拿出來與大家分享。

一:要求用正則來驗證用戶輸入的密碼,至少包含大小字字母,數字和特殊符號中兩種,簡單的說,就是驗證用戶輸入的密碼不能太簡單。

乍一想,這種正則好像不太方便下手寫,至少以前站長在驗證用戶輸入的密碼格式時,都是分步來寫的,比如:

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));

上面的正則表達的意思是,不能爲純數字,不能爲純小寫字母,不能爲純大寫字母,不能爲純特殊符號,至少六位。

不要看着有點複雜,其實很簡單的,站長來給大家拆開分析一下:

(?!) 這是正則裏的一個“語法結構”,表示“規定後面不是”的意思,看這篇《jquery正則中問號的三種[說四種那是忽悠人]用法詳解及在線實例演示》

瞭解了上面這一句,那麼上面的正則就好理解了:

(?![0-9]+$)  表示後面不能爲純數字

(?![a-z]+$)  表示後面不能爲純小寫字母

(?![A-Z]+$)  表示後面不能爲純大寫字母
(?!([^(0-9a-zA-Z)])+$) 表示後面不能爲除數字和字母外的純特殊符號
^ 這個符號單獨用表示“開頭”,用在中括號的開頭,表示“非”;

.{6,}  表示至少6位的任意字符

$ 表示“結尾” 

二:另外還有一種情況,那就是,有時我們需要我們的密碼必須爲“字母+數字+特殊符號”,那麼我們要如何寫呢?

(?![0-9a-z]+$) 不能爲小寫字母與數字
(?![0-9A-Z]+$) 不能爲大寫字母與數字
(?![0-9\W]+$)  不能爲數字及特殊符號
(?![a-z\W]+$)  不能爲小寫字母及特殊符號
(?![A-Z\W]+$)  不能爲大寫字母及特殊符號
(?![0-9a-zA-Z]+$) 不能爲大寫,小寫字母與數字

把這三種情況也加上去後,就只剩下“必須包含數字、大小寫字母和特殊符號”這一種情況了,但是我們也得出了一個超長的正則,這裏就不寫了!

那麼有沒有簡單的方法呢?當然是有的:

var v=$("#text").val();
reg=/^(?=.*[a-zA-Z])(?=.*[1-9])(?=.*[\W]).{6,}$/;
alert(reg.test(v));

(?=)這個語法結構在正則裏表示“設定後面是”的意思。

(?=.*[a-zA-Z])  這句的意思就是後面必須有一位大寫或小寫字母

(?=.*[1-9]) 這句的意思是後面必須有一位數字

(?=.*[\W]) 這句的意思是後面必須有一個非字母數字及下劃線的特殊符號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章