// 表单验证规则
export const regular = {
    password: {
        reg: /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$)^.{6,64}$/,
        message: '密码必须包含字母、数字、特殊符号中的任意两种组合，长度最少6位',
    },
    phone: {
        reg: /^$|^1[3456789]\d{9}$/,
        message: '手机号码无效',
    },
    email: {
        reg: /^$|^([a-zA-Z]|[0-9])(\w)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/,
        message: '邮箱地址无效',
    },
    en: {
        reg: /^[A-Za-z]+$/,
        message: '只能输入英文字母（不允许空格）',
    },
    enname: {
        reg: /^[a-zA-Z0-9_]{1,}$/,
        message: '只能输入英文字母、数字、下划线',
    },
    cardno: {
        reg: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
        message: '身份证号码不合规',
    },
    bankcardno: {
        reg: /^([1-9]{1})(\d{15}|\d{16}|\d{18})$/,
        message: '银行卡号码不合规',
    },
    integer: {
        reg: /^[1-9]\d*$/,
        message: '只能输入大于0的正整数',
    },
    positive: {
        reg: /^([1-9]\d*)(\.\d{1,6})?$|^0\.\d{1,6}?$/,
        message: '只能输入大于0的数值',
    }
}

export function validate<T extends keyof typeof regular>(value: string, type: T, error?: string) {
    const { reg, message } = regular[type]
    if (reg.test(value)) {
        return ''
    }
    return error ?? message
}