xxm-test-js
Version:
xxm-js通用js工具(utils)库
231 lines (230 loc) • 11.1 kB
TypeScript
/**
* 表单验证类,用于确保输入数据的有效性。
* 支持自定义验证规则、错误提示和异步验证。
* @example
* ```typescript
* const validator = new FormValidator();
* validator.addRule('username', (value) => value.length >= 3, '用户名至少需要 3 个字符');
* validator.addRule('username', (value) => /^[a-zA-Z0-9_]+$/.test(value), '用户名只能包含字母、数字和下划线');
* const result = await validator.validateField('username', 'ab');
* console.log(result); // { isValid: false, errors: ['用户名至少需要 3 个字符', '用户名只能包含字母、数字和下划线'] }
* ```
*/
declare class FormValidator {
private rules;
private errorMessages;
/**
* 为指定字段添加验证规则。
* @param field - 要验证的字段名。
* @param rule - 验证规则函数,返回布尔值或 Promise<布尔值>。
* @param message - 验证失败时的错误提示信息。
* @example
* ```typescript
* const validator = new FormValidator();
* validator.addRule('email', (value) => typeof value === 'string' && /^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z]{2,})$/i.test(value), '请输入有效的邮箱地址');
* ```
*/
addRule(field: string, rule: (value: unknown) => boolean | Promise<boolean>, message: string): void;
/**
* 验证指定字段的值。
* @param field - 要验证的字段名。
* @param value - 要验证的值。
* @returns 包含验证结果和错误信息的对象。
* @example
* ```typescript
* const validator = new FormValidator();
* validator.addRule('age', (value) => typeof value === 'number' && value >= 18, '必须年满 18 岁');
* const result = await validator.validateField('age', 16);
* console.log(result); // { isValid: false, errors: ['必须年满 18 岁'] }
* ```
*/
validateField(field: string, value: unknown): Promise<{
isValid: boolean;
errors: string[];
}>;
/**
* 验证整个表单。
* @param formData - 包含表单字段和值的对象。
* @returns 包含每个字段验证结果和错误信息的数组。
* @example
* ```typescript
* const validator = new FormValidator();
* validator.addRule('username', (value) => value.length >= 3, '用户名至少需要 3 个字符');
* validator.addRule('password', (value) => value.length >= 6, '密码至少需要 6 个字符');
* const formData = { username: 'ab', password: '123' };
* const result = await validator.validateForm(formData);
* console.log(result); // [ { field: 'username', isValid: false, errors: ['用户名至少需要 3 个字符'] }, { field: 'password', isValid: false, errors: ['密码至少需要 6 个字符'] } ]
* ```
*/
validateForm(formData: {
[field: string]: unknown;
}): Promise<{
field: string;
isValid: boolean;
errors: string[];
}[]>;
/**
* 添加常用的手机号验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的手机号'。
*/
addPhoneRule(field: string, message?: string): void;
/**
* 添加常用的邮箱验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的邮箱地址'。
*/
addEmailRule(field: string, message?: string): void;
/**
* 添加常用的身份证验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的身份证号码'。
*/
addIDCardRule(field: string, message?: string): void;
/**
* 添加常用的 URL 验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的 URL'。
* @example
* ```typescript
* const validator = new FormValidator();
* validator.addURLRule('website', '请输入有效的网站地址');
* const result = await validator.validateField('website', 'https://example.com');
* console.log(result); // { isValid: true, errors: [] }
* ```
*/
addURLRule(field: string, message?: string): void;
/**
* 添加常用的数字范围验证规则。
* @param field - 要验证的字段名。
* @param min - 最小值。
* @param max - 最大值。
* @param message - 验证失败时的错误提示信息,默认为 '数值必须在 {min} 到 {max} 之间'。
*/
addNumberRangeRule(field: string, min: number, max: number, message?: string): void;
/**
* 添加常用的邮政编码验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的邮政编码'。
*/
addPostalCodeRule(field: string, message?: string): void;
/**
* 添加常用的用户名格式验证规则。
* 允许字母、数字、下划线,长度 3 到 20 个字符。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '用户名必须由 3 到 20 个字母、数字或下划线组成'。
*/
addUsernameRule(field: string, message?: string): void;
/**
* 添加常用的 IPv4 地址验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的 IPv4 地址'。
*/
addIPv4Rule(field: string, message?: string): void;
/**
* 添加常用的日期格式验证规则。
* 支持 YYYY-MM-DD 格式。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的日期格式(YYYY-MM-DD)'。
*/
addDateRule(field: string, message?: string): void;
/**
* 添加常用的 IPv6 地址验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的 IPv6 地址'。
*/
addIPv6Rule(field: string, message?: string): void;
/**
* 添加常用的信用卡号验证规则。
* 支持 Visa、MasterCard、American Express 等常见信用卡号。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的信用卡号'。
*/
addCreditCardRule(field: string, message?: string): void;
/**
* 添加常用的 MAC 地址验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的 MAC 地址'。
*/
addMACRule(field: string, message?: string): void;
/**
* 添加常用的银行卡号验证规则。
* 简单验证长度为 12 到 19 位数字。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的银行卡号'。
*/
addBankCardRule(field: string, message?: string): void;
/**
* 添加常用的社会信用代码验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的社会信用代码'。
*/
addSocialCreditCodeRule(field: string, message?: string): void;
/**
* 添加常用的车牌号验证规则。
* 支持普通燃油车和新能源车号牌。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的车牌号'。
*/
addLicensePlateRule(field: string, message?: string): void;
/**
* 添加常用的 QQ 号验证规则。
* QQ 号通常为 5 到 11 位数字。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的 QQ 号'。
*/
addQQRule(field: string, message?: string): void;
/**
* 添加常用的微信号验证规则。
* 微信号以字母开头,允许 6 到 20 位字母、数字、下划线和减号。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的微信号'。
*/
addWeChatRule(field: string, message?: string): void;
/**
* 添加常用的密码强度验证规则。
* 密码至少 8 位,包含大小写字母、数字和特殊字符中的至少三种。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '密码至少 8 位,需包含大小写字母、数字和特殊字符中的至少三种'。
*/
addPasswordStrengthRule(field: string, message?: string): void;
/**
* 添加常用的中文姓名验证规则。
* 允许 2 到 4 个中文字符。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '请输入有效的中文姓名'。
*/
addChineseNameRule(field: string, message?: string): void;
/**
* 添加文件扩展名验证规则。
* @param field - 要验证的字段名。
* @param extensions - 允许的文件扩展名数组。
* @param message - 验证失败时的错误提示信息,默认为 '文件格式不支持'。
* @returns 无返回值,该方法直接将验证规则添加到验证器中。
*/
addFileExtensionRule(field: string, extensions: string[], message?: string): void;
/**
* 添加必填字段验证规则。
* @param field - 要验证的字段名。
* @param message - 验证失败时的错误提示信息,默认为 '此字段为必填项'。
* @returns 无返回值,该方法直接将验证规则添加到验证器中。
*/
addRequiredRule(field: string, message?: string): void;
/**
* 添加最大长度验证规则。
* @param field - 要验证的字段名。
* @param maxLength - 最大长度。
* @param message - 验证失败时的错误提示信息,默认为 '长度不能超过 {maxLength} 个字符'。
* @returns 无返回值,该方法直接将验证规则添加到验证器中。
*/
addMaxLengthRule(field: string, maxLength: number, message?: string): void;
/**
* 添加最小长度验证规则。
* @param field - 要验证的字段名。
* @param minLength - 最小长度。
* @param message - 验证失败时的错误提示信息,默认为 '长度不能小于 {minLength} 个字符'。
* @returns 无返回值,该方法直接将验证规则添加到验证器中。
*/
addMinLengthRule(field: string, minLength: number, message?: string): void;
}
export { FormValidator };