d-render
Version:
基于 Element Plus 二次封装的数据驱动渲染组件库 - 表单、搜索表单、表格配置化渲染
44 lines (41 loc) • 1.55 kB
JavaScript
import { isInputEmpty } from '@d-render/shared';
import { translate, defaultLocale } from '../locale';
const fallbackT = (path, option) => translate(path, option, defaultLocale);
const createTypedValidator = (test, messagePath, t) => {
return (rule, value, callback) => {
const str = value;
if (isInputEmpty(str) || test(str)) {
callback();
} else {
callback(new Error(rule.message || t(messagePath)));
}
};
};
const createValidators = (t = fallbackT) => ({
email: createTypedValidator(
(value) => /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(value),
"dr.form.email",
t
),
identityCard: createTypedValidator(
(value) => /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/.test(value),
"dr.form.identityCard",
t
),
mobilePhone: createTypedValidator(
(value) => /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57]|19[13589])[0-9]{8}$/.test(value),
"dr.form.mobilePhone",
t
),
sql: createTypedValidator(
(value) => /^select/i.test(value),
"dr.form.sql",
t
)
});
const defaultValidators = createValidators(fallbackT);
const emailValidator = defaultValidators.email;
const identityCardValidator = defaultValidators.identityCard;
const mobilePhoneValidator = defaultValidators.mobilePhone;
const sqlSimpleValidator = defaultValidators.sql;
export { createValidators, emailValidator, identityCardValidator, mobilePhoneValidator, sqlSimpleValidator };