正则表达式:开发者的必修课
正则表达式(Regular Expression,简称Regex)是文本处理的瑞士军刀。无论你是在做表单验证、日志分析、数据提取还是文本替换,正则表达式都能帮你用简洁的语法完成复杂的文本操作。据统计,超过80%的文本匹配场景都可以用正则表达式优雅地解决。
核心语法速查
正则表达式的语法虽然看起来像外星文,但其实只有少数几个核心概念:
- 字符类:
\d匹配数字,\w匹配字母数字下划线,\s匹配空白字符,.匹配任意字符 - 量词:
*匹配0次或多次,+匹配1次或多次,?匹配0次或1次,{n,m}匹配n到m次 - 锚点:
^匹配行首,$匹配行尾,\b匹配单词边界 - 分组:
()创建捕获组,(?:)创建非捕获组,|表示或 - 修饰符:g全局匹配,i忽略大小写,m多行模式,s点号匹配换行
10个最常用的正则模式
- 邮箱验证:
/^[\w.-]+@[\w.-]+\.\w{2,}$/— 覆盖99%的常见邮箱格式 - 手机号码:
/^1[3-9]\d{9}$/— 匹配中国大陆手机号 - URL匹配:
/https?:\/\/[\w.-]+(?:\.[\w]{2,})(?:\/[^\s]*)?/— 提取文本中的链接 - IPv4地址:
/^((?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/ - 日期格式:
/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/— YYYY-MM-DD - 中文字符:
/[\u4e00-\u9fa5]/— 匹配中文汉字 - 身份证号:
/^\d{17}[\dXx]$/— 18位身份证 - 去除HTML标签:
/<[^>]+>/g— 提取纯文本 - 密码强度:
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/— 至少8位含大小写和数字 - 金额格式:
/^\d+(?:\.\d{1,2})?$/— 最多两位小数
性能优化技巧
正则表达式的性能问题往往被忽视,但在处理大量文本时可能导致严重的性能瓶颈。以下是一些优化建议:避免过度使用贪婪量词,优先使用非贪婪量词(*?和+?);避免深层嵌套的分组,这容易导致灾难性回溯;使用具体字符类代替.通配符,减少不必要的回溯尝试;预编译常用正则(在JavaScript中,将正则赋值给变量而不是每次重新创建)。
正则调试实战
调试正则表达式最有效的方法是"分步测试法":先写一个最简单的匹配,然后逐步增加条件。比如要匹配邮箱,先确保能匹配a@b.com,然后加上用户名规则,再加上域名规则,最后加上边界约束。每一步都验证结果,避免写出长串无法调试的正则。
工具推荐
推荐使用我们的在线正则表达式测试工具,支持实时匹配高亮、分组显示、常用模板,让你快速调试正则表达式,所有数据本地处理。