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;

  

posted @ 2020-03-29 16:34  前端大兵  阅读(627)  评论(0编辑  收藏  举报