tl-uniapp
Version:
自主开发的UniApp组件——Жидзин(triangulum-ui)系列组件库。用于组件
51 lines (47 loc) • 3.18 kB
JavaScript
const XValidator = {};
XValidator.check = function (value, rules, require = false) {
// console.log("XValidator.check:", value, rules, require, (!rules || !Array.isArray(rules)) && !require);
// 没有验证规则切不需要验证返回null;
if ((!rules || !Array.isArray(rules)) && !require) return null;
// 没有值且没有不需要验证返回null; 用于跳出结果;
if (!value && !require) return null;
for (const rule of rules) {
// console.log(+value,rule,+value < rule.minNumber)
if (rule.require === true && (['', undefined, null].includes(value) || (Array.isArray(value) && value.length === 0))) {
return rule?.message || '必填';
} else if ((rule.minNumber || rule.minNumber === 0) && Number(value) < rule.minNumber) {
return rule?.message || '不能少于' + rule.minNumber;
} else if ((rule.maxNumber || rule.maxNumber === 0) && Number(value) > rule.maxNumber) {
return rule?.message || '不能大于' + rule.maxNumber;
} else if (rule.min && value?.length < rule.min) {
return rule?.message || '不能少于' + rule.min + '字符';
} else if (rule.max && value?.length > rule.max) {
return rule?.message || '不能大于' + rule.max + '字符';
} else if (rule.rule === 'number' && isNaN(value)) {
return rule?.message || '不是有效数字';
} else if (rule.rule === 'bank_card' && !/^([1-9]{1})(\d{15}|\d{18})$/.test(value)) {
return rule?.message || '不是有效银行卡号';
} else if (rule.rule === 'idCard' && !/^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$/.test(value)) {
return rule?.message || '不是有效身份证号';
} else if (rule.rule === 'phone' && !/(^1[356789]\d{9}$)/.test(value)) {
return rule?.message || '不是11位有效有机号';
} else if (rule.rule === 'phone&telephone' && !/(^1[356789]\d{9}$)|(^0\d{2,3}-?\d{7,8}$)/.test(value)) {
return rule?.message || '不是有效机号';
} else if (rule.rule === 'telephone' && !/(^0\d{2,3}-?\d{7,8}$)/.test(value)) {
return rule?.message || '不是有效座机号';
} else if (rule.rule === 'phone_number' && !/(^1[356789]\d{9}$)|(^0\d{2,3}-?\d{7,8}$)|(^\+?[78]\d{10}$)/.test(value)) {
return rule?.message || '不是有效国际电话号码';
} else if (rule.rule === 'email' && !/(^\w+[\w\.\-\_]*@\w+[\.\w]*\.\w{2,}$)/.test(value)) {
return rule?.message || '不是有效邮箱';
} else if (rule.rule === 'url' && !/(^(https?|ftp|file|wss?):\/\/[-\w+&@#/%?=~_|!:,.;]+[-\w+&@#/%=~_|]$)/.test(value)) {
return rule?.message || '不是有效URL链接';
} else if (rule.pattern && !new RegExp(rule.pattern).test(value)) {
return rule?.message || '不是有效内容';
}
}
if (require === true && (['', undefined, null].includes(value) || (Array.isArray(value) && value.length === 0))) {
return '必填';
}
return null;
};
export default XValidator;