validate 简易正则校验插件

发表于 2019-10-16 19:36:44   |   下载附件   |   字体:
validate正则校验表单校验表单提交校验rules 校验正则
/**
 * 
 * @authors 简易表单验证小插件(arttanzl)
 * @date    2019-10-16 17:24:10
 * @version v-1.0.0
 *
	// 添加新规则
	validate.setConfig({
		chinese: /.*[u0391-uFFE5].*$/
	})

	// 使用说明
	var userRules = {
        'old_password':[
            { rule:'required', message:'请输入旧密码' },
            { rule:'NumberOrEnglish', message:'旧密码必须是字线或数字'},
            { rule:'min:6', message:'旧密码不能低于6位长度' },
            { rule:'max:20', message:'旧密码不能超过20位长度'}
        ],
        'new_password':[
            { rule:'required', message:'请输入新密码' },
            { rule:'NumberOrEnglish', message:'新密码必须是字线或数字'},
            { rule:'min:6', message:'新密码不能低于6位长度' },
            { rule:'max:20', message:'新密码不能超过20位长度'}
        ],
    }

	// 所有校验不通过的错误
    var resultError = validate.test({old_password:'',new_password:''},userRules);

 */

define({
	// 验证规则
	rules:{
		chinese: /.*[u0391-uFFE5].*$/,                                 // 必须中文输入
        noChinese: /.*[u0391-uFFE5].*$/,                               // 非中文输入
        email: /^[w-.]+@[w-.]+(.w+)+$/,                          // 邮箱检测
        url: /(http|https)://[w-_]+(.[w-_]+)+([w-.,@?^=%&:/~+#]*[w-@?^=%&/~+#])?/, // 地址检测
        number: /^[0-9]*$/,                                              // 必须是数字(正整数)
        decimal: /(^d+)(.d+)?$/,                                        // 必须是小数
        money: /(^[0-9]{1,10}$)|(^d{1,10})(.d+)?$/,                   // 必须是钱  10 或 10.00
        pmInteger: /^[+-]?[0-9]*$/,                                      // 必须是数字(正负整数)
        mobile: /^1[3,5,7,8][0-9][0-9]{8}$/,                            // 手机号码
        tel: /^(((?:[+0]d{1,3}-[1-9]d{1,2})|d{3,4})-)?d{5,8}$/,     // 电话号码
        NumberOrEnglish: /^[0-9A-Za-z]*$/,                               // 必须是数字或者英文(正整数)
        numberAndWord:/^(?!d+$)(?![a-zA-Z]+$)[a-zA-Zd]+$/,             // 字母加数字
        gIcNo:/^([0-9A-Za-z()]){9,20}$/,                                 // 身份证检测
        gPhone:/^[0-9]{9,20}$/                                           // 手机号检测
	},
	// 新增正则规则
	setConfig:function(obj){
		for(var k in obj){
			this.rules[k] = obj[k];
		}
	},
	// 验证函数
    validate:function (rule, value, message){
        for (var i in this.rules) {
            // 不能为空
            if(rule == 'required'){
                var reg = /^s*$/g;
                if(reg.test(value) || value == null || value == ""){
                    return message;
                }else{
                    return false;
                }
            }
            // 正则通过报错
            if(rule == 'noChinese'){
                if (this.rules[rule].test(value)) {
                    return message;
                } else {
                    return false;
                }
            }
            // 不能小于 10
            var minPert = /^min:[0-9]*$/;
            if(minPert.test(rule)){
                var arr = rule.split(':'), min = arr[1];
                if(value.length < min){
                    return message;
                } else {
                    return false;
                }
            }
            // 不能大于 20
            var maxPert = /^max:[0-9]*$/;
            if(maxPert.test(rule)){
                var arr = rule.split(':'), max = arr[1];
                if(value.length > max){
                    return message;
                } else {
                    return false;
                }
            }
            // 正则不通过报错
            if (this.rules[rule]) {
                if (!this.rules[rule].test(value)) {
                    return message;
                } else {
                    return false;
                }
            }
        }
    },
    // 逐一校验 formDatas 数据值,formRules:规则对象
    check:function(formDatas,formRules){
        var message = [];
        for(var i in formRules){
            var item = formRules[i];
            for(var k = 0, ken = item.length; k < ken; k++){
                var result = this.validate(item[k]['rule'],formDatas[i],item[k]['message']);
                if(result){
                    message.push({
                        test:i,
                        message:item[k]['message']
                    });
                    break;
                }
            }
        }
        return message;
    },
    // 检测入口 打印所有报错消息
    // formDatas 数据对象
    // formRules 校验规则
    test:function (formDatas,formRules) {
        var msg = this.check(formDatas,formRules) , error = [];
        if(msg.length > 0){
            for(var i=0, len = msg.length; i < len; i++ ){
                error.push(msg[i]['message']);
            }
            return error;
        }else{
            return false;
        }
    }
});