正規表達式如下:
var myreg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z_]{6,18}$/;
詳細解析如下:
(?=pattern)
執行正向預測先行搜尋的子表達式,該表達式比對處于比對 pattern 的字元串的起始點的字元串。它是一個非捕獲比對,即不能捕獲供以後使用的比對。例如,'Windows (?=95|98|NT|2000)' 比對“Windows 2000”中的“Windows”,但不比對“Windows 3.1”中的“Windows”。預測先行不占用字元,即發生比對後,下一比對的搜尋緊随上一比對之後,而不是在組成預測先行的字元後。
.
比對除“\n”之外的任何單個字元。若要比對包括“\n”在内的任意字元,請使用諸如“[\s\S]”之類的模式。
*
零次或多次比對前面的字元或子表達式。例如,zo* 比對“z”和“zoo”。* 等效于 {0,}。
[a-z]
字元範圍。比對指定範圍内的任何字元。例如,“[a-z]”比對“a”到“z”範圍内的任何小寫字母。
()是為了提取比對的字元串。表達式中有幾個()就有幾個相應的比對字元串。
/*檢查密碼長度且必須包含數字和字母可帶下劃線*/
function fnCheckPassword(){
var password = document.getElementById('password').value;
var myreg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z_]{6,18}$/;
if(!myreg.test(password)){
alert("密碼必須包含數字字母,可帶下劃線,長度為6-18位");
return false;
}else{
return true;
}
}