暂无最近使用记录
暂无收藏工具

正则表达式测试工具 - 开发者必备

实时匹配、高亮显示、快速调试

/ /
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+)+,使用非捕获组(?:...),把常见匹配放前面。

常见问题

Q 正则表达式.*和.*?有什么区别?
A .*是贪婪匹配,会匹配尽可能多的字符;.*?是非贪婪(懒惰)匹配,会匹配尽可能少的字符。例如对于字符串<div>content</div><.*>会匹配整个字符串,而<.*?>只匹配<div>
Q 如何匹配中文字符?
A 使用Unicode范围[\u4e00-\u9fa5]可以匹配常用汉字。如果要匹配包括生僻字在内的所有中文,可以使用[\u4e00-\u9fff]或更宽泛的\p{Script=Han}(部分语言支持)。
Q 为什么我的正则在不同语言中结果不同?
A 不同编程语言的正则引擎有差异。JavaScript使用的是PCRE变体,与Python、Java、PHP等略有不同。主要差异在于:Unicode支持程度、断言语法、命名捕获组语法等。建议在目标语言环境中再次测试。
Q 如何提取括号内的内容?
A 使用捕获组\(([^)]+)\)可以匹配并捕获圆括号内的内容。外层\(\)匹配实际的括号(需转义),内层([^)]+)捕获括号之间的内容。方括号、花括号同理。
Q 正则表达式性能优化有哪些技巧?
A 1. 避免过度使用.*,尽量使用精确的字符类;2. 使用非捕获组(?:...)代替普通分组;3. 把最可能匹配的分支放前面;4. 使用锚点^$限定位置;5. 避免嵌套量词如(a+)+防止灾难性回溯。
Q 什么是正则表达式的回溯?
A 回溯是正则引擎匹配失败时尝试其他可能路径的过程。当正则过于复杂或存在嵌套量词时,可能导致灾难性回溯(指数级时间复杂度)。避免方法:使用原子组、占有量词,或重构正则表达式。

使用说明

相关工具

本工具使用JavaScript正则引擎,测试结果仅供参考。在实际项目中使用时,请在目标编程语言环境中再次验证。