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

正则表达式测试

正则表达式
/ /
测试文本
匹配结果
输入正则表达式查看匹配结果...

常用正则表达式模板

手机号码
^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
^匹配字符串开头^Hello 匹配以Hello开头
$匹配字符串结尾World$ 匹配以World结尾
[abc]匹配方括号内任意字符[aeiou] 匹配任意元音
\d匹配数字,等同于[0-9]\d{4} 匹配4位数字
\w匹配字母数字下划线\w+ 匹配单词
\s匹配空白字符\s+ 匹配空格
|或运算符cat|dog 匹配cat或dog
()分组捕获(\d{4})-(\d{2}) 捕获年月

正则进阶知识

贪婪与非贪婪
量词默认是贪婪的会尽可能多匹配。在量词后面加一个?就变成非贪婪模式,比如.*?会尽可能少匹配字符。
修饰符的作用
g标志匹配所有结果而不是只匹配第一个,i忽略字母大小写,m让^和$匹配每一行的开头和结尾。
特殊字符要转义
点号、星号、加号、问号、方括号等在正则里有特殊含义,要匹配它们本身得在前面加反斜杠转义。
零宽断言
(?=...)正向先行断言、(?!...)负向先行断言,它们只做条件判断不消耗字符,适合做复杂的位置匹配。
捕获组与反向引用
用圆括号创建捕获组,之后可以通过\1、\2引用之前捕获的内容,常用于查找重复单词。
性能注意事项
避免嵌套量词比如(a+)+会导致灾难性回溯,用非捕获组(?:...)代替不需要引用的分组可以提升效率。

关于正则表达式测试

这个工具能干什么

写正则表达式的时候总是不确定对不对?用这个工具边写边看效果。在上面的输入框里填上你的正则,下面放上测试文本,匹配到的内容会实时高亮显示出来。匹配了几个、分别在什么位置,一目了然。再也不用在代码里反复跑测试了,直接在这里调通再拿去用。

内置了哪些实用功能

除了实时匹配高亮,还支持全局(g)、忽略大小写(i)、多行(m)、单行(s)四种模式的自由组合。下方还准备了手机号、邮箱、身份证、IP地址、日期格式等十几种常用正则模板,点一下就自动填入,省去从头写的麻烦。语法速查表覆盖了正则里最常用的符号和语法规则,忘了某个写法随时翻看。

怎么使用

  • 输入正则:在正则输入框中填写你的表达式,不需要写前后的斜杠
  • 选择修饰符:根据需要点击g/i/m/s按钮来开启或关闭对应模式
  • 编辑测试文本:在测试文本区域输入或粘贴你要匹配的内容
  • 使用模板:不想从零开始?直接点击常用模板快速加载预设的正则表达式

注意事项

本工具使用的是浏览器内置的JavaScript正则引擎,和Python、Java、Go等语言的正则引擎在某些高级特性上可能有差异。建议在这里调通基本逻辑后,再到实际项目的目标语言环境中做最终验证。另外要注意避免写出灾难性回溯的正则,比如嵌套量词(a+)+可能导致浏览器卡死。

常见问题

正则表达式.*和.*?有什么区别?
.*是贪婪匹配,会匹配尽可能多的字符;.*?是非贪婪(懒惰)匹配,会匹配尽可能少的字符。例如对于字符串content,会匹配整个字符串,而只匹配。
如何匹配中文字符?
使用Unicode范围[\u4e00-\u9fa5]可以匹配常用汉字。如果要匹配包括生僻字在内的所有中文,可以使用[\u4e00-\u9fff]或更宽泛的\p{Script=Han}(部分语言支持)。
为什么我的正则在不同语言中结果不同?
不同编程语言的正则引擎有差异。JavaScript使用的是PCRE变体,与Python、Java、PHP等略有不同。主要差异在于:Unicode支持程度、断言语法、命名捕获组语法等。建议在目标语言环境中再次测试。
如何提取括号内的内容?
使用捕获组\(([^)]+)\)可以匹配并捕获圆括号内的内容。外层\(和\)匹配实际的括号(需转义),内层([^)]+)捕获括号之间的内容。方括号、花括号同理。
正则表达式性能优化有哪些技巧?
1. 避免过度使用.*,尽量使用精确的字符类;2. 使用非捕获组(?:...)代替普通分组;3. 把最可能匹配的分支放前面;4. 使用锚点^$限定位置;5. 避免嵌套量词如(a+)+防止灾难性回溯。
什么是正则表达式的回溯?
回溯是正则引擎匹配失败时尝试其他可能路径的过程。当正则过于复杂或存在嵌套量词时,可能导致灾难性回溯(指数级时间复杂度)。避免方法:使用原子组、占有量词,或重构正则表达式。
用在线工具测试手机号格式,正则应该怎么写?
验证中国11位手机号的通用正则为`^1[3-9]\d{9}$`。它匹配以1开头,第二位是3-9,后接9位数字的号码。您可以在本工具中输入该表达式,并用不同手机号进行实时匹配测试,以确保其准确性和覆盖性。
怎么用正则表达式验证文本的字数限制?
使用 `^.{min,max}$` 格式的正则可以精确控制文本长度。例如,`^.{5,20}$` 匹配5到20个任意字符(包括空格)。若只限制最大长度,如不超过100字,可用 `^.{1,100}$`。在本工具中,您可以输入表达式和待测文本,实时查看是否匹配,快速验证您的字数限制规则。

相关工具

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