常用正则表达式大全
1. 手机号(中国大陆)
正则表达式:
ts
^1[3-9]\d{9}$
说明:
^
字符串开头1
手机号以 1 开头[3-9]
第二位为 3~9\d{9}
后续 9 位数字$
字符串结尾
通过示例: 13812345678
, 15900001111
不通过示例: 12812345678
, 1381234567
, 8613812345678
TypeScript 校验函数:
ts
export const isValidPhone = (value: string): boolean =>
/^1[3-9]\d{9}$/.test(value);
2. 邮箱
正则表达式:
ts
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
说明:
^
开头[a-zA-Z0-9._%+-]+
用户名部分@
必须包含[a-zA-Z0-9.-]+
域名\.
顶级域名前的点[a-zA-Z]{2,}
顶级域名至少两位$
结尾
通过示例: user@example.com
, abc_123@qq.com
不通过示例: user@domain
, user@@domain.com
TypeScript 校验函数:
ts
export const isValidEmail = (value: string): boolean =>
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(value);
3. URL
正则表达式:
ts
^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(\/\S*)?$
说明:
(https?:\/\/)?
可选协议头([a-zA-Z0-9-]+\.)+
域名及子域名[a-zA-Z]{2,}
顶级域名(\/\S*)?
可选路径
通过示例: https://www.example.com
, www.google.com
不通过示例: htp://example.com
, example
TypeScript 校验函数:
ts
export const isValidURL = (value: string): boolean =>
/^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(\/\S*)?$/.test(value);
4. 年月(YYYY-MM)
正则表达式:
ts
^(19|20)\d{2}-(0[1-9]|1[0-2])$
说明:
(19|20)\d{2}
年份 1900-2099(0[1-9]|1[0-2])
月份 01-12
通过示例: 2024-01
, 1999-12
不通过示例: 24-01
, 2024-13
TypeScript 校验函数:
ts
export const isValidYearMonth = (value: string): boolean =>
/^(19|20)\d{2}-(0[1-9]|1[0-2])$/.test(value);
5. 日期(YYYY-MM-DD)
正则表达式:
ts
^(?:(?:19|20)\d{2})-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|02-(?:0[1-9]|1\d|2[0-9]))$
说明:
- 匹配 YYYY-MM-DD 格式
- 1、3、5、7、8、10、12 月允许 31 天
- 4、6、9、11 月允许 30 天
- 2 月允许 29 天
通过示例: 2025-10-22
, 2000-01-01
不通过示例: 2025-02-30
, 2025/10/22
TypeScript 校验函数:
ts
export const isValidDate = (value: string): boolean =>
/^(?:(?:19|20)\d{2})-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|02-(?:0[1-9]|1\d|2[0-9]))$/.test(
value
);
6. 邮政编码
正则表达式:
ts
^[1-9]\d{5}$
说明:
[1-9]
首位非 0\d{5}
后续 5 位数字
通过示例: 215000
, 100000
不通过示例: 012345
, 21500a
TypeScript 校验函数:
ts
export const isValidPostalCode = (value: string): boolean =>
/^[1-9]\d{5}$/.test(value);
7. 密码(至少 8 位,含字母和数字)
正则表达式:
ts
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
说明:
(?=.*[A-Za-z])
至少一个字母(?=.*\d)
至少一个数字[A-Za-z\d]{8,}
长度至少 8 位,由字母和数字组成
通过示例: abc12345
, A1bcdefg
不通过示例: 12345678
, abcdefg
, abc_1234
TypeScript 校验函数:
ts
export const isValidPassword = (value: string): boolean =>
/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/.test(value);