Initial commit: One Pipe System
完整的管理系统,包含账户管理、卡片管理、套餐管理、财务管理等功能模块。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
126
src/utils/business/validate.ts
Normal file
126
src/utils/business/validate.ts
Normal file
@@ -0,0 +1,126 @@
|
||||
/**
|
||||
* 业务验证工具函数
|
||||
*/
|
||||
|
||||
/**
|
||||
* 验证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
|
||||
}
|
||||
Reference in New Issue
Block a user