41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
/**
|
||
* 验证邮箱格式
|
||
* @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'
|
||
}
|