正則表達式如下:
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;
}
}