正则表达式实战:20个常用模式详解

📅 2026年3月29日 ⏱️ 25分钟阅读 👤 KodaTools团队

正则表达式(Regular Expression)是处理文本的强大工具,但复杂的语法常常让开发者望而却步。本文将详细介绍20个最常用的正则表达式模式,每个模式都配有详细解释和实际应用示例,帮助你快速掌握正则表达式的使用技巧。

一、正则表达式基础

1.1 什么是正则表达式?

正则表达式是一种用于匹配字符串模式的强大工具。它使用特定的语法规则来描述字符串的特征,可以用于搜索、替换、验证等操作。

1.2 基本语法元素

💡 常用元字符

二、20个常用正则表达式模式

1 邮箱验证

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

说明:验证标准邮箱格式,支持常见的邮箱格式。

应用场景:用户注册、表单验证

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test('user@example.com')); // true
console.log(emailRegex.test('invalid-email')); // false

2 手机号验证(中国大陆)

^1[3-9]\d{9}$

说明:验证中国大陆手机号,支持13x-19x号段。

应用场景:用户注册、联系方式验证

const phoneRegex = /^1[3-9]\d{9}$/;
console.log(phoneRegex.test('13800138000')); // true
console.log(phoneRegex.test('12345678901')); // false

3 URL验证

^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$

说明:验证HTTP/HTTPS URL格式。

应用场景:链接验证、网站地址输入

const urlRegex = /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/;
console.log(urlRegex.test('https://www.kodatools.com')); // true
console.log(urlRegex.test('invalid-url')); // false

4 身份证号验证(中国)

^[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]$

说明:验证18位中国身份证号,包含校验位验证。

应用场景:实名认证、用户信息验证

const idCardRegex = /^[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]$/;
console.log(idCardRegex.test('11010519900307234X')); // true

5 日期格式验证(YYYY-MM-DD)

^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$

说明:验证YYYY-MM-DD格式的日期。

应用场景:日期输入验证、表单验证

const dateRegex = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/;
console.log(dateRegex.test('2026-03-29')); // true
console.log(dateRegex.test('2026-13-01')); // false

6 时间格式验证(HH:MM:SS)

^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

说明:验证24小时制时间格式。

应用场景:时间输入验证、日志分析

const timeRegex = /^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$/;
console.log(timeRegex.test('23:59:59')); // true
console.log(timeRegex.test('24:00:00')); // false

7 IP地址验证(IPv4)

^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$

说明:验证IPv4地址格式。

应用场景:网络配置、日志分析

const ipRegex = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
console.log(ipRegex.test('192.168.1.1')); // true
console.log(ipRegex.test('256.1.1.1')); // false

8 密码强度验证

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

说明:验证密码强度,要求至少8位,包含大小写字母、数字和特殊字符。

应用场景:用户注册、密码修改

const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
console.log(passwordRegex.test('Password123!')); // true
console.log(passwordRegex.test('weak')); // false

9 用户名验证

^[a-zA-Z][a-zA-Z0-9_-]{2,15}$

说明:验证用户名,要求以字母开头,可包含字母、数字、下划线和连字符,长度3-16位。

应用场景:用户注册、账号设置

const usernameRegex = /^[a-zA-Z][a-zA-Z0-9_-]{2,15}$/;
console.log(usernameRegex.test('KodaTools')); // true
console.log(usernameRegex.test('123user')); // false

10 邮政编码验证(中国)

^[1-9]\d{5}$

说明:验证中国邮政编码,6位数字。

应用场景:地址填写、物流信息

const postalCodeRegex = /^[1-9]\d{5}$/;
console.log(postalCodeRegex.test('100000')); // true
console.log(postalCodeRegex.test('12345')); // false

11 银行卡号验证

^[1-9]\d{15,18}$

说明:验证银行卡号,16-19位数字。

应用场景:支付信息、银行卡绑定

const bankCardRegex = /^[1-9]\d{15,18}$/;
console.log(bankCardRegex.test('6222021234567890123')); // true

12 中文姓名验证

^[\u4e00-\u9fa5]{2,4}$

说明:验证中文姓名,2-4个汉字。

应用场景:实名认证、用户信息

const chineseNameRegex = /^[\u4e00-\u9fa5]{2,4}$/;
console.log(chineseNameRegex.test('张三')); // true
console.log(chineseNameRegex.test('张三丰')); // true

13 十六进制颜色验证

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

说明:验证十六进制颜色代码。

应用场景:颜色选择器、样式设置

const hexColorRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
console.log(hexColorRegex.test('#1890ff')); // true
console.log(hexColorRegex.test('#fff')); // true

14 QQ号验证

^[1-9]\d{4,10}$

说明:验证QQ号,5-11位数字。

应用场景:社交账号绑定

const qqRegex = /^[1-9]\d{4,10}$/;
console.log(qqRegex.test('12345')); // true
console.log(qqRegex.test('12345678901')); // true

15 微信号验证

^[a-zA-Z][a-zA-Z0-9_-]{5,19}$

说明:验证微信号,以字母开头,6-20位。

应用场景:社交账号绑定

const wechatRegex = /^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/;
console.log(wechatRegex.test('wechat123')); // true

16 车牌号验证(中国)

^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](?:((?=[A-HJ-NP-Z0-9])[\dA-HJ-NP-Z]{4})|((?=[A-HJ-NP-Z0-9])[\dA-HJ-NP-Z]{5}))$

说明:验证中国车牌号,支持普通车牌和新能源车牌。

应用场景:车辆信息登记、停车场系统

const plateNumberRegex = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](?:((?=[A-HJ-NP-Z0-9])[\dA-HJ-NP-Z]{4})|((?=[A-HJ-NP-Z0-9])[\dA-HJ-NP-Z]{5}))$/;
console.log(plateNumberRegex.test('京A12345')); // true

17 HTML标签验证

^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$

说明:验证HTML标签格式。

应用场景:HTML解析、内容过滤

const htmlTagRegex = /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/;
console.log(htmlTagRegex.test('<div>content</div>')); // true

18 文件路径验证(Windows)

^[a-zA-Z]:\\(?:[^\\/:*?"<>|]+\\)*[^\\/:*?"<>|]*$

说明:验证Windows文件路径格式。

应用场景:文件操作、路径验证

const filePathRegex = /^[a-zA-Z]:\\(?:[^\\/:*?"<>|]+\\)*[^\\/:*?"<>|]*$/;
console.log(filePathRegex.test('C:\\Users\\Documents\\file.txt')); // true

19 JSON格式验证

^[\s\S]*$

说明:简单的JSON格式验证(建议使用JSON.parse()进行完整验证)。

应用场景:数据格式验证

// 推荐使用JSON.parse()验证
function isValidJSON(str) {
  try {
    JSON.parse(str);
    return true;
  } catch (e) {
    return false;
  }
}
console.log(isValidJSON('{"name":"KodaTools"}')); // true

20 空白行验证

^\s*$

说明:验证空白行或只包含空白字符的字符串。

应用场景:文本处理、日志分析

const blankLineRegex = /^\s*$/;
console.log(blankLineRegex.test('   ')); // true
console.log(blankLineRegex.test('')); // true
console.log(blankLineRegex.test('text')); // false

三、正则表达式工具推荐

💡 KodaTools正则表达式工具

KodaTools提供了强大的正则表达式测试工具,帮助你快速测试和调试正则表达式:

3.1 在线测试工具

除了KodaTools,还有其他优秀的在线正则表达式工具:

3.2 IDE插件

主流IDE都有正则表达式插件:

四、正则表达式最佳实践

4.1 性能优化

⚠️ 性能注意事项

4.2 可读性优化

// ❌ 不好的做法:复杂的正则表达式
const regex = /^([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\.([a-zA-Z]{2,})$/;

// ✅ 好的做法:添加注释
const emailRegex = /^
  ([a-zA-Z0-9._%+-]+)    # 用户名部分
  @                       # @符号
  ([a-zA-Z0-9.-]+)       # 域名部分
  \.                      # 点号
  ([a-zA-Z]{2,})         # 顶级域名
$/x;

4.3 测试策略

五、常见问题与解决方案

5.1 中文匹配问题

// 匹配中文字符
const chineseRegex = /[\u4e00-\u9fa5]/g;

// 匹配中文标点
const chinesePunctuationRegex = /[,。!?;:""''【】()、]/g;

5.2 多行匹配问题

// 使用m标志进行多行匹配
const multilineRegex = /^line/gm;
const text = 'line1\nline2\nline3';
console.log(text.match(multilineRegex)); // ['line', 'line', 'line']

5.3 特殊字符转义

// 转义特殊字符
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

const searchTerm = 'KodaTools.com';
const escapedTerm = escapeRegExp(searchTerm);
const regex = new RegExp(escapedTerm, 'g');

六、总结

正则表达式是处理文本的强大工具,掌握这20个常用模式可以解决大部分日常开发需求。关键是要理解每个模式的原理,并根据实际需求进行调整。

🎯 核心要点

希望这篇正则表达式实战指南能帮助你快速掌握正则表达式的使用技巧。如果你需要测试正则表达式,别忘了使用KodaTools的正则表达式测试工具,它可以帮助你快速测试和调试正则表达式。

如果你有任何问题或建议,欢迎在评论区留言讨论。

← 返回博客列表