// 正则 /** 手机号正则(中国大陆) */ export const PHONE_REGEX = /^1[3-9]\d{9}$/ /** 邮箱正则 */ const EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ /** 身份证号(简化版) */ const ID_CARD_REGEX = /(^\d{15}$)|(^\d{18}$)|(^\d{17}[\dXx]$)/ /** 密码强度(至少8位,包含数字和字母) */ const PASSWORD_REGEX = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&]{8,}$/ /** 交易密码(必须是6位数字) */ const TRANSACTION_PASSWORD_REGEX = /^\d{6}$/ /** * 校验手机号 * @param {string} phone - 待校验的手机号 * @returns {{ valid: boolean, message: string }} */ export const validatePhone = phone => { if (!phone) return { valid: false, message: '手机号不能为空' } if (!PHONE_REGEX.test(phone)) { return { valid: false, message: '手机号格式不正确' } } return { valid: true, message: '' } } /** * 校验邮箱 * @param {string} email - 待校验的邮箱 * @returns {{ valid: boolean, message: string }} */ export const validateEmail = email => { if (!email) return { valid: false, message: '邮箱不能为空' } if (!EMAIL_REGEX.test(email)) { return { valid: false, message: '邮箱格式不正确' } } return { valid: true, message: '' } } /** * 校验密码强度 * @param {string} password - 待校验的密码 * @returns {{ valid: boolean, message: string }} */ export const validatePassword = password => { if (!password) return { valid: false, message: '密码不能为空' } if (password.length < 8) { return { valid: false, message: '密码长度不能少于8位' } } if (!PASSWORD_REGEX.test(password)) { return { valid: false, message: '密码需包含字母和数字' } } return { valid: true, message: '' } } /** * 校验确认密码是否与原密码一致 * @param {string} password - 原始密码 * @param {string} confirmPassword - 确认密码 * @returns {{ valid: boolean, message: string }} */ export function validateConfirmPassword(password, confirmPassword) { if (!confirmPassword) { return { valid: false, message: '请再次输入密码' } } if (password !== confirmPassword) { return { valid: false, message: '两次输入的密码不一致' } } return { valid: true, message: '' } } /** * 校验身份证号(仅格式校验,不验证真实性) * @param {string} idCard - 待校验的身份证号 * @returns {{ valid: boolean, message: string }} */ export const validateIdCard = idCard => { if (!idCard) return { valid: false, message: '身份证号不能为空' } if (!ID_CARD_REGEX.test(idCard)) { return { valid: false, message: '身份证号格式不正确' } } return { valid: true, message: '' } } /** * 校验交易密码 * @param {string} password - 待校验的密码 * @returns {{ valid: boolean, message: string }} */ export const validateTransactionPassword = (password, name = '密码') => { if (!password) return { valid: false, message: `${name}不能为空` } if (password.length < 6) { return { valid: false, message: `${name}长度不能少于6位` } } if (!TRANSACTION_PASSWORD_REGEX.test(password)) { return { valid: false, message: `${name}必须是6位数字` } } return { valid: true, message: '' } }