You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.6 KiB
49 lines
1.6 KiB
/**
|
|
* 表单校验纯函数:手机号 / 短信验证码。
|
|
*
|
|
* 单一来源:页面与 API 层都从这里取规则,避免同一正则被复制到多处后各自分叉
|
|
* (此前 `/^1\d{10}$/` 在页面与接口层各有一份,验证码长度规则散落 4 处且不一致)。
|
|
*/
|
|
|
|
/** 短信验证码最小长度 */
|
|
export const SMS_CODE_MIN_LENGTH = 4;
|
|
|
|
/** 短信验证码最大长度(部分通道下发 6 位) */
|
|
export const SMS_CODE_MAX_LENGTH = 6;
|
|
|
|
/** 中国大陆手机号:1 开头共 11 位数字 */
|
|
export const PHONE_RE = /^1\d{10}$/;
|
|
|
|
/** 短信验证码:4–6 位数字 */
|
|
export const SMS_CODE_RE = /^\d{4,6}$/;
|
|
|
|
/** 邮箱:本地部分@域名,域名至少含一个点且后缀为 2 位以上字母(明显笔误拦在本地,真实性由后端验证) */
|
|
export const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[A-Za-z]{2,}$/;
|
|
|
|
/**
|
|
* 校验手机号是否为合法的大陆号码。
|
|
* @param phone 手机号
|
|
* @returns 合法返回 true
|
|
*/
|
|
export function isValidPhone(phone: string): boolean {
|
|
return PHONE_RE.test(phone);
|
|
}
|
|
|
|
/**
|
|
* 校验短信验证码格式(纯数字、4–6 位)。
|
|
* 只做格式校验,正确性由后端判定。
|
|
* @param code 验证码
|
|
* @returns 合法返回 true
|
|
*/
|
|
export function isValidSmsCode(code: string): boolean {
|
|
return SMS_CODE_RE.test(code.trim());
|
|
}
|
|
|
|
/**
|
|
* 校验邮箱格式。只拦明显笔误,不做 DNS / 可达性验证(由后端判定)。
|
|
* @param email 邮箱
|
|
* @returns 合法返回 true
|
|
*/
|
|
export function isValidEmail(email: string): boolean {
|
|
return EMAIL_RE.test(email.trim());
|
|
}
|
|
|