[Javascript]常用正則表達式及驗證

  • 10773
  • 0
  • 2019-11-22

正規表示式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE)是使用單個字串來描述、符合一系列符合某個句法規則的字串。在很多文字編輯器裡,正則運算式通常被用來檢索、替換那些符合某個模式的文字。

僅限數字的驗證:

var regex = /^[0-9\s]*$/;
if (!regex.test("123"))
  alert(“這是數字”);
else
  alert(“格式錯誤”);

僅限英文及數字的驗證:

var regex = new RegExp("^[a-zA-Z0-9 ]+$");
if (!regex.test("1qaz2wsx"))
  alert("這是英文及數字混合字串");
else
  alert("格式錯誤");

欄位不可為空的驗證(全形及半形都不行)

if (!$.trim($("#SCHOOL").val().replace(/\ /g, ""))) {
   alert("學校欄位不可為空");
}

密碼原則的驗證:

passwordValidator = function (text) {
    var passwordregex8digits = new RegExp("^(?=.{8,})");  //最少八個位元
    var passwordregexLowercase = new RegExp("^(?=.*[a-z])");   //英文小寫
        var passwordregexUppercase = new RegExp("^(?=.*[A-Z])");   //英文大小
        var passwordregexNumber = new RegExp("^(?=.*[0-9])");    //數字
        var passwordRegexSpecial = new RegExp("^(?=.*[!@#$%^&*])");   //特殊字元
        if (!passwordregex8digits.test(text)) {
            violate_count++;
        }
        if (!passwordregexLowercase.test(text)) {
            violate_count++;
        }
    if (!passwordregexUppercase.test(text)) {
        violate_count++;
    }    
        if (!passwordregexNumber.test(text)) {
            violate_count++;
        }
    if (!passwordRegexSpecial.test(text)) {
        violate_count++;
    }
        alert('違規次數:' + violate_count);
}

電子郵件格式的驗證:

emailValidator = function (inputData) {
  const re = /^(([.](?=[^.]|^))|[\w_%{|}#$~`+!?-])+@(?:[\w-]+\.)+[a-zA-Z.]{2,63}$/;
  if (re.test(inputData))
  {
    alert("這是合法的EMAIL");
  }   
  else {
    alert("請輸入符合格式的EMAIL");
  }  
}

身分證字號格式的驗證:

function checkTwID(id){
    //建立字母分數陣列(A~Z)
    var city = new Array(1,10,19,28,37,46,55,64,39,73,82, 2,11,20,48,29,38,47,56,65,74,83,21, 3,12,30)
    id = id.toUpperCase();
    //使用「正規表達式」檢驗格式
    if (id.search(/^[A-Z](1|2)\d{8}$/i) == -1) {
        return false;
    } else {
        //將字串分割為陣列(IE必需這麼做才不會出錯)
        id = id.split('');
        //計算總分
        var total = city[id[0].charCodeAt(0)-65];
        for(var i=1; i<=8; i++){
            total += eval(id[i]) * (9 - i);
        }
        //補上檢查碼(最後一碼)
        total += eval(id[9]);
        //檢查比對碼(餘數應為0);
        return ((total%10 == 0 ));
    }
}