正则表达式(Regular Expression)是处理文本的强大工具,但复杂的语法常常让开发者望而却步。本文将详细介绍20个最常用的正则表达式模式,每个模式都配有详细解释和实际应用示例,帮助你快速掌握正则表达式的使用技巧。
正则表达式是一种用于匹配字符串模式的强大工具。它使用特定的语法规则来描述字符串的特征,可以用于搜索、替换、验证等操作。
说明:验证标准邮箱格式,支持常见的邮箱格式。
应用场景:用户注册、表单验证
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
说明:验证中国大陆手机号,支持13x-19x号段。
应用场景:用户注册、联系方式验证
const phoneRegex = /^1[3-9]\d{9}$/;
console.log(phoneRegex.test('13800138000')); // true
console.log(phoneRegex.test('12345678901')); // false
说明:验证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
说明:验证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
说明:验证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
说明:验证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
说明:验证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位,包含大小写字母、数字和特殊字符。
应用场景:用户注册、密码修改
const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
console.log(passwordRegex.test('Password123!')); // true
console.log(passwordRegex.test('weak')); // false
说明:验证用户名,要求以字母开头,可包含字母、数字、下划线和连字符,长度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
说明:验证中国邮政编码,6位数字。
应用场景:地址填写、物流信息
const postalCodeRegex = /^[1-9]\d{5}$/;
console.log(postalCodeRegex.test('100000')); // true
console.log(postalCodeRegex.test('12345')); // false
说明:验证银行卡号,16-19位数字。
应用场景:支付信息、银行卡绑定
const bankCardRegex = /^[1-9]\d{15,18}$/;
console.log(bankCardRegex.test('6222021234567890123')); // true
说明:验证中文姓名,2-4个汉字。
应用场景:实名认证、用户信息
const chineseNameRegex = /^[\u4e00-\u9fa5]{2,4}$/;
console.log(chineseNameRegex.test('张三')); // true
console.log(chineseNameRegex.test('张三丰')); // true
说明:验证十六进制颜色代码。
应用场景:颜色选择器、样式设置
const hexColorRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
console.log(hexColorRegex.test('#1890ff')); // true
console.log(hexColorRegex.test('#fff')); // true
说明:验证QQ号,5-11位数字。
应用场景:社交账号绑定
const qqRegex = /^[1-9]\d{4,10}$/;
console.log(qqRegex.test('12345')); // true
console.log(qqRegex.test('12345678901')); // true
说明:验证微信号,以字母开头,6-20位。
应用场景:社交账号绑定
const wechatRegex = /^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/;
console.log(wechatRegex.test('wechat123')); // true
说明:验证中国车牌号,支持普通车牌和新能源车牌。
应用场景:车辆信息登记、停车场系统
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
说明:验证HTML标签格式。
应用场景:HTML解析、内容过滤
const htmlTagRegex = /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/;
console.log(htmlTagRegex.test('<div>content</div>')); // true
说明:验证Windows文件路径格式。
应用场景:文件操作、路径验证
const filePathRegex = /^[a-zA-Z]:\\(?:[^\\/:*?"<>|]+\\)*[^\\/:*?"<>|]*$/;
console.log(filePathRegex.test('C:\\Users\\Documents\\file.txt')); // true
说明:简单的JSON格式验证(建议使用JSON.parse()进行完整验证)。
应用场景:数据格式验证
// 推荐使用JSON.parse()验证
function isValidJSON(str) {
try {
JSON.parse(str);
return true;
} catch (e) {
return false;
}
}
console.log(isValidJSON('{"name":"KodaTools"}')); // true
说明:验证空白行或只包含空白字符的字符串。
应用场景:文本处理、日志分析
const blankLineRegex = /^\s*$/;
console.log(blankLineRegex.test(' ')); // true
console.log(blankLineRegex.test('')); // true
console.log(blankLineRegex.test('text')); // false
除了KodaTools,还有其他优秀的在线正则表达式工具:
主流IDE都有正则表达式插件:
// ❌ 不好的做法:复杂的正则表达式
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;
// 匹配中文字符
const chineseRegex = /[\u4e00-\u9fa5]/g;
// 匹配中文标点
const chinesePunctuationRegex = /[,。!?;:""''【】()、]/g;
// 使用m标志进行多行匹配
const multilineRegex = /^line/gm;
const text = 'line1\nline2\nline3';
console.log(text.match(multilineRegex)); // ['line', 'line', 'line']
// 转义特殊字符
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
const searchTerm = 'KodaTools.com';
const escapedTerm = escapeRegExp(searchTerm);
const regex = new RegExp(escapedTerm, 'g');
正则表达式是处理文本的强大工具,掌握这20个常用模式可以解决大部分日常开发需求。关键是要理解每个模式的原理,并根据实际需求进行调整。
希望这篇正则表达式实战指南能帮助你快速掌握正则表达式的使用技巧。如果你需要测试正则表达式,别忘了使用KodaTools的正则表达式测试工具,它可以帮助你快速测试和调试正则表达式。
如果你有任何问题或建议,欢迎在评论区留言讨论。
← 返回博客列表