// async-validator rules // to view at https://github.com/yiminghe/async-validator const username = [ { required: true, pattern: /^[a-zA-Z0-9][a-zA-Z0-9_]{2,19}$/, message: "用户名必须以字母或数字开头,长度为3-20位,允许字母数字下划线", trigger: "change", }, ]; const commonCode = ({ prop, min = 3, max = 20 }) => { return [ { required: true, pattern: new RegExp(`^[a-zA-Z0-9_]{${min},${max}}$`), message: `${prop}只能由数字、字母和下划线组成,长度${min}-${max}个字符`, trigger: "change", }, ]; }; const email = [ { required: true, type: "email", message: "邮箱格式不正确", trigger: "change", }, ]; const password = [ { required: true, pattern: /^[a-zA-Z0-9_]{6,20}$/, message: "密码只能由数字、字母和下划线组成,长度6-20个字符", trigger: "change", }, ]; const phone = [ { required: true, pattern: /^1\d{10}$/, message: "请输入合适的手机号码", trigger: "change", }, ]; const smscode = [ { required: true, pattern: /^[a-zA-Z0-9]{4}$/, message: "请输入4位短信验证码", trigger: "change", }, ]; const numberValidator = ({ prop, min = 1, max = 100 }) => { return [ { required: true, validator: (rule, value, callback) => { if (!value && value !== 0) { return callback(new Error(`请输入${prop}`)); } if (!Number.isInteger(value)) { callback(new Error("请输入数字值")); } else { if (value < min || value > max) { callback(new Error(`${prop}的大小只能介于${min}-${max}之间。`)); } else { callback(); } } }, trigger: "change", }, ]; }; // 正反斜杠限制输入 const slashesLimitValidator = [ { validator: (rule, value, callback) => { if (value.match(/[\\/]/g)) { callback(new Error("禁止输入正斜杠和反斜杠")); } else { callback(); } }, }, ]; export { username, commonCode, email, password, phone, smscode, numberValidator, slashesLimitValidator, };