正则表达式测试工具 - 开发者必备
实时匹配、高亮显示、快速调试
正则表达式
/
/
g 全局i 忽略大小写m 多行s 单行测试文本
匹配结果
输入正则表达式查看匹配结果...
常用正则表达式模板
手机号码
^1[3-9]\d{9}$
电子邮箱
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
URL网址
^https?://[\w.-]+(?:/[\w./?%&=-]*)?$
IPv4地址
^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}...
身份证号(18位)
^[1-9]\d{5}(?:19|20)\d{2}...
日期格式
^\d{4}[-/.](?:0[1-9]|1[0-2])[-/.]...
中文字符
[\u4e00-\u9fa5]+
数字
\d+
英文字母
[a-zA-Z]+
空白字符
\s+
HTML标签
<[^>]+>
强密码
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)...
正则表达式语法速查
| 符号 | 说明 | 示例 |
|---|---|---|
. | 匹配任意单个字符(除换行符) | a.c 匹配 abc, adc |
* | 匹配前一个字符0次或多次 | ab* 匹配 a, ab, abb |
+ | 匹配前一个字符1次或多次 | ab+ 匹配 ab, abb |
? | 匹配前一个字符0次或1次 | ab? 匹配 a, ab |
{n} | 匹配前一个字符恰好n次 | a{3} 匹配 aaa |
{n,m} | 匹配前一个字符n到m次 | a{2,4} 匹配 aa, aaa, aaaa |
^ | 匹配字符串开头 | ^Hello 匹配以Hello开头 |
$ | 匹配字符串结尾 | World$ 匹配以World结尾 |
[abc] | 匹配方括号内任意字符 | [aeiou] 匹配任意元音 |
[^abc] | 匹配不在方括号内的字符 | [^0-9] 匹配非数字 |
\d | 匹配数字,等同于[0-9] | \d{4} 匹配4位数字 |
\w | 匹配字母数字下划线 | \w+ 匹配单词 |
\s | 匹配空白字符 | \s+ 匹配空格 |
| | 或运算符 | cat|dog 匹配cat或dog |
() | 分组捕获 | (\d{4})-(\d{2}) 捕获年月 |
正则表达式小知识
贪婪与非贪婪
默认量词是贪婪的,会尽可能多匹配。加
?变成非贪婪模式,如.*?会尽可能少匹配。修饰符说明
g全局匹配所有结果,i忽略大小写,m多行模式让^$匹配每行。转义特殊字符
如需匹配
. * + ? ^ $ [ ] { } | \ ( )等特殊字符,需用反斜杠转义。零宽断言
(?=...)正向先行断言,(?!...)负向先行断言,不消耗字符。捕获组与反向引用
用圆括号
()创建捕获组,可通过\1、\2引用之前捕获的内容。性能优化
避免嵌套量词如
(a+)+,使用非捕获组(?:...),把常见匹配放前面。常见问题
正则表达式.*和.*?有什么区别?
.*是贪婪匹配,会匹配尽可能多的字符;.*?是非贪婪(懒惰)匹配,会匹配尽可能少的字符。例如对于字符串<div>content</div>,<.*>会匹配整个字符串,而<.*?>只匹配<div>。
如何匹配中文字符?
使用Unicode范围
[\u4e00-\u9fa5]可以匹配常用汉字。如果要匹配包括生僻字在内的所有中文,可以使用[\u4e00-\u9fff]或更宽泛的\p{Script=Han}(部分语言支持)。
为什么我的正则在不同语言中结果不同?
不同编程语言的正则引擎有差异。JavaScript使用的是PCRE变体,与Python、Java、PHP等略有不同。主要差异在于:Unicode支持程度、断言语法、命名捕获组语法等。建议在目标语言环境中再次测试。
如何提取括号内的内容?
使用捕获组
\(([^)]+)\)可以匹配并捕获圆括号内的内容。外层\(和\)匹配实际的括号(需转义),内层([^)]+)捕获括号之间的内容。方括号、花括号同理。
正则表达式性能优化有哪些技巧?
1. 避免过度使用
.*,尽量使用精确的字符类;2. 使用非捕获组(?:...)代替普通分组;3. 把最可能匹配的分支放前面;4. 使用锚点^$限定位置;5. 避免嵌套量词如(a+)+防止灾难性回溯。
什么是正则表达式的回溯?
回溯是正则引擎匹配失败时尝试其他可能路径的过程。当正则过于复杂或存在嵌套量词时,可能导致灾难性回溯(指数级时间复杂度)。避免方法:使用原子组、占有量词,或重构正则表达式。
使用说明
- 在正则表达式输入框中输入要测试的正则模式
- 点击修饰符按钮可开启/关闭g(全局)、i(忽略大小写)、m(多行)、s(单行)模式
- 在测试文本框中输入要匹配的文本,匹配结果会实时高亮显示
- 点击下方常用模板可快速应用预设的正则表达式
- 本工具使用JavaScript正则引擎,与其他语言可能略有差异
相关工具
本工具使用JavaScript正则引擎,测试结果仅供参考。在实际项目中使用时,请在目标编程语言环境中再次验证。