81 lines
1.9 KiB
TypeScript
81 lines
1.9 KiB
TypeScript
export function validateEmail(email: string): boolean {
|
|
if (!email || typeof email !== 'string') {
|
|
return false;
|
|
}
|
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
return emailRegex.test(email);
|
|
}
|
|
|
|
export function validatePhone(phone: string): boolean {
|
|
if (!phone || typeof phone !== 'string') {
|
|
return false;
|
|
}
|
|
const phoneRegex = /^1[3-9]\d{9}$/;
|
|
return phoneRegex.test(phone);
|
|
}
|
|
|
|
export function validatePassword(password: string): boolean {
|
|
if (!password || typeof password !== 'string') {
|
|
return false;
|
|
}
|
|
return password.length >= 8;
|
|
}
|
|
|
|
export function validateUrl(url: string): boolean {
|
|
if (!url || typeof url !== 'string') {
|
|
return false;
|
|
}
|
|
try {
|
|
new URL(url);
|
|
return true;
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export function validateRequired(value: unknown): boolean {
|
|
if (value === null || value === undefined) {
|
|
return false;
|
|
}
|
|
if (typeof value === 'string') {
|
|
return value.trim().length > 0;
|
|
}
|
|
if (typeof value === 'number') {
|
|
return !isNaN(value);
|
|
}
|
|
if (Array.isArray(value)) {
|
|
return value.length > 0;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
export function validateLength(value: string, min: number, max: number): boolean {
|
|
if (typeof value !== 'string') {
|
|
return false;
|
|
}
|
|
return value.length >= min && value.length <= max;
|
|
}
|
|
|
|
export function validateRange(value: number, min: number, max: number): boolean {
|
|
if (typeof value !== 'number' || isNaN(value)) {
|
|
return false;
|
|
}
|
|
return value >= min && value <= max;
|
|
}
|
|
|
|
export function validateChineseId(id: string): boolean {
|
|
if (!id || typeof id !== 'string') {
|
|
return false;
|
|
}
|
|
const idRegex = /^[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]$/;
|
|
return idRegex.test(id);
|
|
}
|
|
|
|
export function validateUsername(username: string): boolean {
|
|
if (!username || typeof username !== 'string') {
|
|
return false;
|
|
}
|
|
const usernameRegex = /^[a-zA-Z0-9_]{3,20}$/;
|
|
return usernameRegex.test(username);
|
|
}
|