正则表达式是处理字符串验证、查找、替换的神器,我整理了前端开发中最常用、最实用的正则,附带校验代码,直接复制到项目里就能用。
一、基础校验类(表单必备)
1. 手机号校验(国内 11 位手机号)
const phoneReg = /^1[3-9]\d{9}$/;
// 使用示例
console.log(phoneReg.test('13800138000')); // true
- 规则:以 1 开头,第二位 3-9,后面 9 位数字。
2. 邮箱校验(通用标准)
const emailReg = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/;
console.log(emailReg.test('test@163.com')); // true
3. 身份证号(18 位,支持校验最后一位 X)
const idCardReg = /(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
console.log(idCardReg.test('11010119900307456X')); // true
4. 密码强度校验
-
简单密码:6-16 位字母 / 数字 / 下划线
const pwdSimpleReg = /^\w{6,16}$/; -
强密码:必须包含大小写字母 + 数字 + 特殊字符,8-20 位
const pwdStrongReg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,20}$/;
5. 验证码(6 位纯数字)
const codeReg = /^\d{6}$/;
二、数字格式类
1. 纯数字(正整数 / 负整数 / 0)
const numberReg = /^-?\d+$/;
2. 正整数
const positiveIntReg = /^[1-9]\d*$/;
3. 浮点数(支持正负小数)
const floatReg = /^-?\d+(.\d+)?$/;
4. 金额(最多 2 位小数)
const moneyReg = /^\d+(.\d{1,2})?$/;
三、文本格式类
1. 中文校验
const chineseReg = /^[\u4e00-\u9fa5]+$/;
2. 英文 / 字母校验
const letterReg = /^[a-zA-Z]+$/;
3. 用户名(4-16 位,字母 / 数字 / 中文)
const usernameReg = /^[a-zA-Z0-9\u4e00-\u9fa5]{4,16}$/;
4. URL 网址校验
const urlReg = /^(https?://)?([\da-z.-]+).([a-z.]{2,6})([/\w.-]*)*/?$/;
5. 邮政编码(6 位数字)
const zipReg = /^\d{6}$/;
四、常用处理类(替换 / 提取)
1. 去除所有空格
let str = ' 123 456 ';
str = str.replace(/\s+/g, ''); // 结果:'123456'
2. 手机号中间 4 位打码
let phone = '13800138000';
phone = phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'); // 138****8000
3. 数字千分位格式化(123456 → 123,456)
let num = '12345678';
num = num.replace(/\B(?=(\d{3})+(?!\d))/g, ','); // 12,345,678
4. 提取字符串中的所有数字
let str = '价格199元,库存50件';
let nums = str.match(/\d+/g); // [199, 50]
五、JS 正则核心方法(必记)
- 正则表达式基础语法:
^表示字符串的开始,$表示字符串的结束\d匹配一个数字,等价于[0-9]\w匹配一个字母或数字字符,等价于[A-Za-z0-9]+匹配前面的子表达式一次或多次。例如,\d+匹配一个或多个数字
- 正则表达式修饰符:
i:执行不区分大小写的匹配g:执行全局匹配(查找所有而非第一个匹配项)m:执行多行匹配
- JavaScript中使用正则表达式的方法:
test()方法:正则.test(字符串)→ 返回true/falseexec()方法:在字符串中执行一个搜索匹配,返回一个结果数组或null- 字符串方法:
match():字符串.match(正则)→ 返回匹配结果数组replace():字符串.replace(正则, 新内容)split():使用正则表达式分割字符串
总结
- 表单校验优先用:手机号、邮箱、身份证、密码、验证码正则
- 数字处理用:纯数字、金额、千分位正则
- 文本处理用:去空格、手机号打码、提取数字正则
- 所有正则直接复制,搭配
test()方法即可完成校验