js 身份證、手機號、郵箱驗證

/**
 * 郵箱校驗
 */
function check_email(email){
    var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
    return reg.test(email);
}
/**
 * 手機號校驗,1開頭共11位數字。
 */
function check_phone(phone){
   var reg = /^1\d{10}$/;
    return reg.test(phone);
}
/**
 * 身份證校驗,身份證號碼爲15位或者18位,15位時全爲數字,18位前17位爲數字,最後一位是校驗位,可能爲數字或字符X
 */
function check_ID(card){
    var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    if(reg.test(card)){
        if(card.length==18){
        //將前17位加權因子保存在數組裏
            var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); 
        //這是除以11後,可能產生的11位餘數、驗證碼,也保存成數組
            var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); 
       //用來保存前17位各自乖以加權因子後的總和
            var idCardWiSum=0; 
            for(var i=0;i<17;i++){
                idCardWiSum+=card.substring(i,i+1)*idCardWi[i];
            }
    //計算出校驗碼所在數組的位置
            var idCardMod=idCardWiSum%11;
        //得到最後一位身份證號碼
            var idCardLast=card.substring(17);

       //如果等於2,則說明校驗碼是10,身份證號碼最後一位應該是X
            if(idCardMod==2){
                if(idCardLast=="X"||idCardLast=="x"){
                    return true;
                }else{
                    return false;
                }
            }else{
          //用計算出的驗證碼與最後一位身份證號碼匹配,如果一致,說明通過,否則是無效的身份證號碼
                if(idCardLast==idCardY[idCardMod]){
                    return true;
                }else{
                    return false;
                }
            }
        }
    }else{
        return false;
    }
}
/**
 * 字母校驗
 * @param obj
 * @returns {boolean}
 */
function check_letter(obj){
    if (/^[a-za-z]+$/.test( obj ))
    {
        return true;
    }else{
        return false;
    }
}
發佈了18 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章