天天看點

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

正規表達式如下:

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