正则表达式在表单验证、文本提取以及数据清洗中,都能帮我们省下大量代码。今天就整理了一批日常开发高频用到的正则表达式,附上场景说明和使用提示,新手也能直接上手。
一、 基础字符匹配
这类正则主要用于快速筛选、匹配简单字符规则,是进阶用法的基础。
| 正则表达式 | 匹配场景 | 示例 |
|---|---|---|
| ^abc$ | 精确匹配字符串abc(开头 + 结尾限制) | 匹配abc,不匹配aabc/abc123 |
| . | 匹配除换行符外的任意单个字符 | a.c匹配abc/a1c/a#c |
| \d | 匹配单个数字(等价于[0-9]) | \d\d匹配12/99,不匹配ab |
| \w | 匹配字母、数字、下划线(等价于[a-zA-Z0-9_]) | \w+匹配user_01/name23 |
| \s | 匹配任意空白字符(空格、制表符、换行等) | a\sb匹配a b/a b |
| [abc] | 匹配括号内的任意一个字符 | [abc]匹配a/b/c |
| [^abc] | 匹配除括号内字符外的任意字符 | [^abc]匹配1/x/#,不匹配a |
二、 表单验证高频正则
前端 / 后端做表单校验时,这些正则能直接复用,覆盖大部分常见场景。
1. 手机号验证
python
^1[3-9]\d{9}$
- 说明:以1开头,第二位为3-9(排除 12 开头的非手机号段),后面跟 9 位数字。
- 注意:仅做格式校验,不验证号码是否真实存在。
2. 邮箱验证
javascript
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
- 说明:支持字母、数字、下划线、连字符,适配大部分主流邮箱格式(如user_name@163.com、test-123@qq.com.cn)。
3. 身份证号验证
python
^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
- 说明:严格匹配 18 位身份证结构 ------6 位地址码 + 8 位出生日期(19/20 开头)+3 位顺序码 + 1 位校验码(支持 X/x)。
4. 密码强度验证
python
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,16}$
- 说明:8-16 位,必须包含大小写字母和数字,兼顾安全性和易用性。
- 进阶:如需加入特殊字符,可添加(?=.*[!@#$%^&*])。
5. 邮政编码
python
^[1-9]\d{5}$
- 说明:6 位数字,第一位不为 0。
三、 文本处理常用正则
日常做文本提取、替换、清洗时,这些正则能大幅提升效率。
1. 提取 URL 链接
python
https?://[^\s]+
- 说明:匹配http或https开头的链接,直到遇到空白字符为止。
- 示例:从文本中提取https://www.baidu.com、http://github.com。
2. 匹配 HTML 标签
<[^>]+>
- 说明:匹配<开头、>结尾的标签,适用于简单的标签删除场景。
- 注意:复杂 HTML 解析建议用专业库(如 Python 的 BeautifulSoup),正则无法处理嵌套标签。
3. 匹配中文字符
python
[\u4e00-\u9fa5]
- 说明:匹配任意单个汉字,\u4e00-\u9fa5是汉字的 Unicode 编码范围。
- 扩展:[\u4e00-\u9fa5]+匹配连续汉字,可用于提取中文姓名、标题。
4. 去除多余空格
python
\s+
- 用法:将匹配到的连续空格替换为单个空格(如 JavaScript 中str.replace(/\s+/g, ' '))。
5. 匹配数字(整数 + 小数)
python
^-?\d+(\.\d+)?$
- 说明:匹配正负数、整数和小数,例如123、-45.67、0.89。
四、 开发小技巧 & 注意事项
1. 贪婪匹配 vs 非贪婪匹配
- 正则默认是贪婪匹配(尽可能匹配更多字符),比如a.*b匹配a123b456b时会取整个字符串;
- 加?可切换为非贪婪匹配,a.*?b会匹配a123b。
2. 不同语言的正则差异
- JavaScript 中需要加修饰符(如g全局匹配、i忽略大小写);
- Python 的
re模块需注意转义字符(用原始字符串r''避免双反斜杠)。
3. 测试工具推荐 写正则时可以先用在线工具验证,比如 Regex101 、菜鸟工具正则测试,能直观看到匹配结果。