天天看點

js正則校驗表單

/**
 * 表單校驗規則
 * 不符合規則時,傳回錯誤文案
 * 符合規則時,傳回false
 */

var rules = {}

// 是否必填
rules.required = function (value) {
    return (!!value || value === 0) ? false : "請輸入内容"
};

// 最大字元長度
rules.maxLength = function (value, size) {
    var size = size || 256;
    return String(value).length <= size ? false : ("最大不超過" + size + "個字元")
}

// 隻允許字母和數字
rules.onlyAlphabetic = function (value) {
    var reg = /^[0-9a-zA-Z]+$/;
    return reg.test(value) ? false : "隻能輸入字母和數字"
}

// 隻允許字母數字和下劃線
rules.onlyAlphabeticUnderline = function (value) {
    var reg = /^[0-9a-zA-Z_]+$/;
    return reg.test(value) ? false : "隻能輸入字母、數字或下劃線"
}

// 隻允許數字
rules.onlyNumber = function (value) {
    var reg = /^[0-9]+$/;
    return reg.test(value) ? false : "隻能輸入數字"
}

// 隻允許字母
rules.onlyLetter = function (value) {
    var reg = /^[a-zA-Z]+$/;
    return reg.test(value) ? false : "隻能輸入字母"
}

// 特殊字元
rules.noSpecial = function (value) {
    var regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im,
        regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/im;
    return regEn.test(value) || regCn.test(value) ? false : "不能輸入特殊字元"
}

// 郵箱
rules.email = function (value) {
    var reg = /^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/;
    return reg.test(value) ? false : "郵箱格式錯誤"
}

// 手機号(以1開頭的11位數字)
rules.phone = function (value) {
    var reg = /^[1][3,4,5,7,8][0-9]{9}$/;
    return reg.test(value) ? false : "手機格式錯誤"
}

// 隻允許漢字
rules.chinese = function (value) {
    var reg = /^[\u4e00-\u9fa5]+$/;
    return reg.test(value) ? false : "隻能輸入漢字"
}

// 密碼格式校驗
rules.password = function (value) {
    if (String(value).length < 6) {
        return "密碼長度不小于6位"
    }
    if (String(value).length > 18) {
        return "密碼長度不超過18位"
    }
    var level = 0;
    if (value.search(/[a-z]/) > -1) {
        level++; //密碼中包含小寫字母
    }
    if (value.search(/[A-Z]/) > -1) {
        level++; //密碼中包含大寫字母
    }
    if (value.search(/[0-9]/) > -1) {
        level++; //密碼中包含數組
    }
    if (value.search(/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im) > -1) {
        level++; //密碼中包含特殊符号
    }
    if(level<2){
        return "密碼至少包含大寫字母、小寫字母、數字、标點符号中的兩種"
    }else{
        return level; // 目前密碼強度為level(2/3/4)
    }
}


export default rules;