// 邮箱校验 export const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; // 手机号校验,11位 export const phoneRegex = /^\d{11}$/; // 密码校验,8-32位 export const passwordLengthRegex = /^.{8,32}$/; // 密码校验,必须包含数字和字母,特殊符号范围校验 export const passwordWordRegex = /^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z!@#$%^&*()_+.]+$/; // Git地址校验 export const gitRepositoryUrlRegex = /\.git$/; // Webhook 地址校验,允许 HTTP / HTTPS export const httpUrlRegex = /^https?:\/\/[^\s/$.?#].[^\s]*$/i; /** * 校验邮箱 * @param email 邮箱 * @returns boolean */ export function validateEmail(email: string): boolean { return emailRegex.test(email); } /** * 校验手机号 * @param phone 手机号 * @returns boolean */ export function validatePhone(phone: string): boolean { return phoneRegex.test(phone); } /** * 校验密码长度 * @param password 密码 * @returns boolean */ export function validatePasswordLength(password: string): boolean { return passwordLengthRegex.test(password); } /** * 校验密码组成 * @param password 密码 * @returns boolean */ export function validateWordPassword(password: string): boolean { return passwordWordRegex.test(password); } /** * 校验密码 * @param password 密码 * @returns boolean */ export function validatePassword(password: string): boolean { return validatePasswordLength(password) && validateWordPassword(password); } /** * 校验 HTTP / HTTPS 地址 * @param url 地址 * @returns boolean */ export function validateHttpUrl(url: string): boolean { return httpUrlRegex.test(url.trim()); } export function getPatternByAreaCode(code: string): RegExp | null { switch (code) { case '+86': // 中国大陆 return /^\d{10,12}$/; case '+852': // 香港 return /^\d{8}$/; case '+853': // 澳门 return /^\d{8}$/; case '+886': // 台湾 return /^\d{8,11}$/; default: // 其他 return /^\d+$/; } }