// utils/validator.js // 验证中文姓名(2-10个汉字) export const validateChineseName = (name) => { if (!name) { return { valid: false, message: '姓名不能为空' }; } const reg = /^[\u4e00-\u9fa5]{2,10}$/; if (!reg.test(name)) { return { valid: false, message: '请输入2-10个汉字' }; } return { valid: true, message: '' }; }; // 验证手机号码 export const validatePhoneNumber = (phone) => { if (!phone) { return { valid: false, message: '手机号码不能为空' }; } const reg = /^1[3-9]\d{9}$/; if (!reg.test(phone)) { return { valid: false, message: '请输入正确的手机号码' }; } return { valid: true, message: '' }; }; // 验证身份证号码 export const validateIDCard = (idCard) => { if (!idCard) { return { valid: false, message: '身份证号码不能为空' }; } // 基本格式验证 const reg = /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; if (!reg.test(idCard)) { return { valid: false, message: '身份证格式不正确' }; } // 校验码验证 const idCardArray = idCard.split(''); const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; const parity = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; let sum = 0; for (let i = 0; i < 17; i++) { sum += parseInt(idCardArray[i]) * factor[i]; } const mod = sum % 11; if (parity[mod] !== idCardArray[17].toUpperCase()) { return { valid: false, message: '身份证校验码错误' }; } return { valid: true, message: '' }; };