对于大部分程序员而言,正则表达式(Regular Expression / RegEx)往往是“用时搜一搜,用完就忘记”的存在。一串看似天书的 ^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$,却能在数据校验、文本清洗和爬虫提取中发挥无可替代的威力。
本文为你整理了核心元字符图谱、规避贪婪匹配陷阱的技巧,并奉上开箱即用的高频常用正则规则大全。
1. 正则表达式核心元字符速查表
| 字符 | 匹配含义 | 经典示例 |
|---|---|---|
\d |
任意数字(等价于 [0-9]) |
\d{4} 匹配 4 位连续数字 |
\w |
字母、数字或下划线(等价于 [A-Za-z0-9_]) |
常用于用户名、变量名合法性校验 |
\s |
任何空白字符(空格、Tab制表符、换行符) | \s+ 匹配连续的一段空白 |
^ 与 $ |
分别代表字符串的开头与结尾 | 表单校验时必须首尾加上 ^ 和 $,否则只匹配局部 |
+ / * / ? |
量词:1次及以上 / 0次及以上 / 0次或1次 | https? 可同时匹配 http 与 https |
2. 贪婪匹配 vs 非贪婪匹配(惰性匹配)
在提取 HTML 标签内容时,初学者最常犯的一个严重错误就是忽视了“贪婪性”:
待匹配文本: <div>苹果</div><div>香蕉</div>
// ❌ 贪婪匹配 (默认): <div>.*</div>
// 结果: 匹配从第一个 <div> 一直跨越到最后一个 </div>,直接吞掉了中间所有的内容!
// ✅ 非贪婪匹配 (在量词后加问号 ?): <div>.*?</div>
// 结果: 正确分别匹配出 "<div>苹果</div>" 与 "<div>香蕉</div>" 两段
3. 常用实战正则表达式大全(直接复制即用)
① 中国大陆 11 位手机号码(兼容最新号段):
/^1[3-9]\d{9}$/
② 常用电子邮箱地址(Email):
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
③ 中国大陆 18 位身份证号码(包含末位 X 校验):
/^[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]$/
④ 强密码校验(8-20位,必须同时包含大写字母、小写字母、数字和特殊字符):
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,20}$/
⑤ 合法 URL 网址(带 http 或 https):
/^https?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?$/
⑥ 纯汉字中文字符:
/^[\u4e00-\u9fa5]+$/
4. 如何使用在线工具实时调试正则表达式?
直接在代码中运行测试需要频繁重启程序,极度低效。推荐使用易处理 正则表达式测试工具:
- 支持输入待测文本与正则表达式,即时高亮展示所有匹配成功的子片段;
- 清晰展示捕获组(Capturing Groups
$1,$2)的具体抽取内容; - 支持切换全局搜索修饰符(
g)、不区分大小写(i)以及多行模式(m),让正则调试事半功倍。