UNPKG

tl-uniapp

Version:

自主开发的UniApp组件——Жидзин(triangulum-ui)系列组件库。用于组件

51 lines (47 loc) 3.18 kB
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;