UNPKG

@jdlinker/utils

Version:

jdLinker 工具库

97 lines (81 loc) 2.9 kB
import { isNull } from './is'; export const getRegExp = function (validatorName) { const commonRegExp = { number: '/^[-]?\\d+(\\.\\d+)?$/', letter: '/^[A-Za-z]+$/', letterAndNumber: '/^[A-Za-z0-9]+$/', mobilePhone: '/^[1][3-9][0-9]{9}$/', letterStartNumberIncluded: '/^[A-Za-z]+[A-Za-z\\d]*$/', noChinese: '/^[^\u4e00-\u9fa5]+$/', chinese: '/^[\u4e00-\u9fa5]+$/', email: '/^([-_A-Za-z0-9.]+)@([_A-Za-z0-9]+\\.)+[A-Za-z0-9]{2,3}$/', url: '/^([hH][tT]{2}[pP]:\\/\\/|[hH][tT]{2}[pP][sS]:\\/\\/)(([A-Za-z0-9-~]+)\\.)+([A-Za-z0-9-~\\/])+$/' }; return commonRegExp[validatorName]; }; const validateFn = function (validatorName, rule, value, callback, defaultErrorMsg) { //空值不校验 if (isNull(value) || value.length <= 0) { callback(); return; } const reg = eval(getRegExp(validatorName)); if (!reg.test(value)) { let errTxt = rule.errorMsg || defaultErrorMsg; callback(new Error(errTxt)); } else { callback(); } }; export const FormValidators = { /* 数字 */ number(rule, value, callback) { validateFn('number', rule, value, callback, '[' + rule.label + ']包含非数字字符'); }, /* 字母 */ letter(rule, value, callback) { validateFn('letter', rule, value, callback, '[' + rule.label + ']包含非字母字符'); }, /* 字母和数字 */ letterAndNumber(rule, value, callback) { validateFn('letterAndNumber', rule, value, callback, '[' + rule.label + ']只能输入字母或数字'); }, /* 手机号码 */ mobilePhone(rule, value, callback) { validateFn('mobilePhone', rule, value, callback, '[' + rule.label + ']手机号码格式有误'); }, /* 字母开头,仅可包含数字 */ letterStartNumberIncluded(rule, value, callback) { validateFn('letterStartNumberIncluded', rule, value, callback, '[' + rule.label + ']必须以字母开头,可包含数字'); }, /* 禁止中文输入 */ noChinese(rule, value, callback) { validateFn('noChinese', rule, value, callback, '[' + rule.label + ']不可输入中文字符'); }, /* 必须中文输入 */ chinese(rule, value, callback) { validateFn('chinese', rule, value, callback, '[' + rule.label + ']只能输入中文字符'); }, /* 电子邮箱 */ email(rule, value, callback) { validateFn('email', rule, value, callback, '[' + rule.label + ']邮箱格式有误'); }, /* URL网址 */ url(rule, value, callback) { validateFn('url', rule, value, callback, '[' + rule.label + ']URL格式有误'); }, regExp(rule, value, callback) { //空值不校验 if (isNull(value) || value.length <= 0) { callback(); return; } const pattern = eval(rule.regExp); if (!pattern.test(value)) { let errTxt = rule.errorMsg || '[' + rule.label + ']invalid value'; callback(new Error(errTxt)); } else { callback(); } } };