正则表达式测试
边写边匹配,实时高亮并列出捕获分组
常用正则:
手机号
邮箱
身份证
URL
IPv4
日期
中文字符
邮编
8位以上字母数字密码
匹配高亮
匹配详情
常用正则表达式速查
正则表达式(Regular Expression)用一套元字符描述文本模式,几乎每种语言都支持。下表列出开发中最常用的表达式,点击上方标签可直接套用测试:
| 表达式 | 说明 |
|---|---|
| 1[3-9]\d{9} | 中国大陆手机号(11 位,1 开头) |
| [\w.+-]+@[\w-]+\.[\w.]+ | 邮箱地址(宽松匹配) |
| \d{17}[\dXx] | 18 位身份证号(末位可能是 X) |
| (\d{1,3}\.){3}\d{1,3} | IPv4 地址(不校验范围) |
| ^[0-9a-f]{64}$ | SHA-256 十六进制摘要 |
| [\u4e00-\u9fa5] | 单个中文字符(BMP 范围) |
| ^\s*$ | 空白行 |
| (?<=name=)[^&]* | 取 URL 参数值(后行断言) |
常见的坑
- 贪婪与懒惰:
.*会尽可能多匹配,.*?才是尽可能少匹配。匹配<a>1</a><a>2</a>时前者会一次吞掉全部。 - 忘记转义:
.匹配任意字符,要匹配真正的点号需写\.;同理+ ? ( ) [ ] { } | ^ $都有特殊含义。 - 锚点不对:
^和$默认匹配整个字符串的首尾,勾选m后才按行匹配。 - 零宽断言兼容性:后行断言
(?<=...)在较老的 Safari 中不支持,服务端使用前请确认运行环境。 - 别用正则解析 HTML/JSON:嵌套结构应该用解析器,正则只适合处理规整的平面文本。
常见问题
为什么勾选「全局」后匹配结果变多了?
不加 g 时正则只返回第一个匹配结果,加上 g 后会遍历整个文本找出所有匹配,本工具的高亮和列表都会随之更新。
每个语言的写法都一样吗?
核心语法基本通用,但细节有差异:JavaScript 的 \d 默认只匹配 ASCII 数字,Python 的 re 支持更多扩展语法,Go 与 RE2 不支持后行断言。跨语言使用时建议先在目标语言中验证。
测试文本会上传吗?
不会,全部在浏览器本地执行。