jsform校验

export const validateMixin = {
    methods: {
  // 通用
        // 校验中文、英文、数字、下划线
        validateName(errorInfo) {
            return (rule, value, callback) => {
                // /^[0-9a-zA-Z_\-\.\u4e00-\u9fa5]{1,}$/
                // let validFlag = /^[0-9a-zA-Z_\-\u4e00-\u9fa5]{1,}$/.test(value);
                // 特殊字符和空格正则( 不包含-和_ )
                let validFlag = /[`~!@#$%^&*()+=<>?:"{}|,\/;'\\[\]·!¥……()——《》?:“”【】、;‘,。、\s]/im.test(value);
                // let validFlag = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/.test(value);
            
                if (validFlag) {
                    callback(new Error(errorInfo));
                } else {
                    callback();
                }
            }
        },
        // 校验中文、英文、数字、下划线,不能以下划线开头
        validateNameLine(errorInfo) {
            return (rule, value, callback) => {
             
                let validFlag = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/.test(value);
                if (!validFlag) {
                    callback(new Error(errorInfo));
                } else {
                    callback();
                }
            }
        },
        // 校验英文、数字、下划线
        validateEnName(errorInfo) {
            return (rule, value, callback) => {
                // /^[0-9a-zA-Z_\-\.\u4e00-\u9fa5]{1,}$/
                let validFlag = /^[0-9a-zA-Z_]{1,}$/.test(value);
                if (!validFlag) {
                    callback(new Error(errorInfo));
                } else {
                    callback();
                }
            }
        },
        // 校验英文、数字、下划线,不能以下划线开头
        validateEnNameLine(errorInfo) {
            return (rule, value, callback) => {
                let validFlag = /^(?!_)(?!.*?_$)[a-zA-Z0-9_]+$/.test(value);
                if (!validFlag) {
                    callback(new Error(errorInfo));
                } else {
                    callback();
                }
            }
        },
        // 校验IP
        validateIP(errorInfo) {
            return (rule, value, callback) => {
                let validFlag = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/.test(value);
                if (!validFlag) {
                    callback(new Error(errorInfo));
                } else {
                    callback();
                }
            }
        },
        // 校验host
        validateHost(errorInfo) {
            return (rule, value, callback) => {
                let validFlag = /^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?$/.test(value);
                if (!validFlag) {
                    callback(new Error(errorInfo));
                } else {
                    callback();
                }
            }
        },
        // 校验mobile
        validateMobile(errorInfo) {
            return (rule, value, callback) => {
                if (!value) {
                    callback();
                } else {
                    // let validFlag = /^[1][0-9]{10}$/.test(value);
                    let validFlag = new RegExp("^[1][0-9]{10}$").test(value);
                    if (!validFlag) {
                        callback(new Error(errorInfo));
                    } else {
                        callback();
                    }
                }
            }
        },
        // 仅api参数通用
        /**
         * 校验参数名
         */
        validateReqParamName(rule, value, callback) {
            if (!value) {
                // 校验非空
                callback(new Error(' '));
            } else {
                // 校验重名
                let count = 0;
                for (let i = 0; i < this.fieldsForm.reqFields.length; i++) {
                    if (this.fieldsForm.reqFields[i].name === value) {
                        count++;
                        if (count > 1) {
                            callback(new Error(' '));
                        }
                    }
                }
            }
            callback();
        },
        /**
         * 校验参数名
         */
        validateResParamName(rule, value, callback) {
            if (!value) {
                // 校验非空
                callback(new Error(' '));
            } else {
                // 校验重名
                let count = 0;
                for (let i = 0; i < this.fieldsForm.resFields.length; i++) {
                    if (this.fieldsForm.resFields[i].name === value) {
                        count++;
                        if (count > 1) {
                            callback(new Error(' '));
                        }
                    }
                }
            }
            callback();
        },
        /**
         * 校验默认值
         */
        validateDefaultValue(rule, value, callback) {
            // /(?<=\[)\S+(?=\])/g 打包后在safari浏览器有问题
            let regex = new RegExp('(?<=\[)\S+(?=\])', 'g');
            let indexArr = rule.field.match(regex);//匹配字符串中中括号内的内容,不包含中括号
            let index = indexArr[0];
            let curField = this.fieldsForm.reqFields[index];
            let columnType = curField.columnType;
            if (curField.required) callback();
            try {
                switch (columnType) {
                    case 'BOOLEAN':
                        this.fieldsForm.reqFields[index].defaultValue = value === 'true'
                        callback();
                        break;
                    case 'INT':
                    case 'LONG':
                        let tmpVal1 = parseInt(value);
                        if (isNaN(tmpVal1)) throw new Error('类型错误');
                        this.fieldsForm.reqFields[index].defaultValue = tmpVal1;
                        callback();
                        break;
                    case 'FLOAT':
                    case 'DOUBLE':
                        let tmpVal2 = parseFloat(value);
                        if (isNaN(tmpVal2)) throw new Error('类型错误');
                        this.fieldsForm.reqFields[index].defaultValue = tmpVal2;
                        callback();
                        break;
                    default: // STRING
                        callback();
                        break;
                }
            } catch (error) {
                callback(new Error(' '));
            }
        },
         /**
         * 仅支持数字
         */
          validateNumber(errorInfo) {
            return (rule, value, callback) => {
                let validFlag = /^[0-9]+$/.test(value);
                if (!validFlag) {
                    callback(new Error(errorInfo));
                } else {
                    callback();
                }
            }
        },
         /**
         * 端口号校验
         */
          validatePort(errorInfo) {
            return (rule, value, callback) => {
                let validFlag = /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/.test(value);
                if (!validFlag) {
                    callback(new Error(errorInfo));
                } else {
                    callback();
                }
            }
        }
    }
}

你可能感兴趣的:(jsform校验)