/** * 业务验证工具函数 */ /** * 验证ICCID格式 * @param iccid ICCID */ export function validateIccid(iccid: string): boolean { // ICCID通常是19-20位数字 return /^\d{19,20}$/.test(iccid) } /** * 验证IMSI格式 * @param imsi IMSI */ export function validateImsi(imsi: string): boolean { // IMSI通常是15位数字 return /^\d{15}$/.test(imsi) } /** * 验证手机号格式 * @param phone 手机号 */ export function validatePhone(phone: string): boolean { // 中国大陆手机号 return /^1[3-9]\d{9}$/.test(phone) } /** * 验证邮箱格式 * @param email 邮箱 */ export function validateEmail(email: string): boolean { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email) } /** * 验证身份证号 * @param idCard 身份证号 */ export function validateIdCard(idCard: string): boolean { return /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(idCard) } /** * 验证银行卡号 * @param cardNo 银行卡号 */ export function validateBankCard(cardNo: string): boolean { // 一般16-19位 return /^\d{16,19}$/.test(cardNo) } /** * 验证IP地址 * @param ip IP地址 */ export function validateIP(ip: string): boolean { return /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/.test(ip) } /** * 验证URL * @param url URL */ export function validateURL(url: string): boolean { try { new URL(url) return true } catch { return false } } /** * 验证密码强度 * @param password 密码 * @returns 强度等级:weak, medium, strong */ export function validatePasswordStrength(password: string): 'weak' | 'medium' | 'strong' { if (password.length < 6) return 'weak' let strength = 0 // 包含小写字母 if (/[a-z]/.test(password)) strength++ // 包含大写字母 if (/[A-Z]/.test(password)) strength++ // 包含数字 if (/\d/.test(password)) strength++ // 包含特殊字符 if (/[!@#$%^&*(),.?":{}|<>]/.test(password)) strength++ // 长度大于8 if (password.length >= 8) strength++ if (strength <= 2) return 'weak' if (strength <= 3) return 'medium' return 'strong' } /** * 验证金额格式(正数,最多2位小数) * @param amount 金额 */ export function validateAmount(amount: string | number): boolean { const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount return !isNaN(numAmount) && numAmount > 0 && /^\d+(\.\d{1,2})?$/.test(String(amount)) } /** * 验证整数 * @param value 值 * @param min 最小值 * @param max 最大值 */ export function validateInteger(value: number, min?: number, max?: number): boolean { if (!Number.isInteger(value)) return false if (min !== undefined && value < min) return false if (max !== undefined && value > max) return false return true }