Files
taimed-international-app/utils/validator.ts
2025-11-04 12:37:04 +08:00

41 lines
1.3 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 验证邮箱格式
* @param email 邮箱地址
* @returns 是否有效
*/
export function validateEmail(email: string): boolean {
return /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/.test(email)
}
/**
* 验证密码格式
* @param password 密码 6-20位必须包含字母和数字
* @returns 是否有效
*/
export function validatePassword(password: string): boolean {
return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/.test(password)
}
/**
* 检查密码强度
* @param password 密码
* @returns 'strong' | 'medium' | 'weak' | 'invalid'
*/
export function checkPasswordStrength(password: string): 'strong' | 'medium' | 'weak' | 'invalid' {
// 强密码8位以上包含大小写字母、数字和特殊字符
const strongRegex = /^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$/
// 中等密码8位以上包含大小写字母、数字、特殊字符中的两项
const mediumRegex = /^(?=.{8,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[a-z])(?=.*\W))|((?=.*[0-9])(?=.*\W))|((?=.*[A-Z])(?=.*\W))).*$/
// 足够长度8位以上
const enoughRegex = /(?=.{8,}).*/
if (strongRegex.test(password)) {
return 'strong'
} else if (mediumRegex.test(password)) {
return 'medium'
} else if (enoughRegex.test(password)) {
return 'weak'
}
return 'invalid'
}