[轉載]使用正則表達式驗證一個字符串同時包含字母和數字

正則表達式如下:

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


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