//gi
apple-123, banana-456, orange-789

正则表达式测试工具 - 在线匹配调试与语法速查

正则表达式写了一堆,跑起来却不是想要的结果?正则表达式测试工具让你边写边看匹配结果,实时高亮显示匹配内容,支持捕获组查看、常用语法速查和预设模板,帮你快速调试正则表达式。

无论是表单验证、数据提取还是文本替换,写正则不再靠猜。

正则表达式是文本处理的利器,但语法复杂、容易写错是公认的痛点。了解常用语法和调试技巧,能让你写正则时事半功倍。

常用正则语法速查

字符匹配

. 匹配任意字符(除换行符);\d 匹配数字;\w 匹配字母数字下划线;\s 匹配空白字符。大写形式为反向匹配。

量词

* 匹配0次或多次;+ 匹配1次或多次;? 匹配0次或1次;{n,m} 匹配n到m次。加?变为非贪婪模式。

边界与锚点

^ 匹配行首;$ 匹配行尾;\b 匹配单词边界。锚点不消耗字符,只标记位置。

分组与捕获

() 捕获分组;(?:) 非捕获分组;(?=) 正向先行断言;(?!=) 负向先行断言。捕获组可用于反向引用和提取。

常用正则模板

手机号

^1[3-9]\d{9}$

匹配中国大陆11位手机号码。

邮箱地址

^[\w.-]+@[\w.-]+\.\w+$

匹配常见格式的电子邮箱。

身份证号

^\d{17}[\dXx]$

匹配18位身份证号码。

如何使用正则测试工具

  1. 输入正则:在正则表达式输入框中编写你的正则,支持选择修饰符(g全局、i忽略大小写、m多行等)。
  2. 输入测试文本:在测试文本区域输入或粘贴需要匹配的内容。
  3. 查看匹配:匹配结果实时高亮显示,右侧面板展示所有匹配项和捕获组内容。
  4. 调试优化:根据匹配结果调整正则表达式,直到获得预期结果。

典型应用场景

  • 表单验证:编写和测试手机号、邮箱、身份证等字段的验证正则。
  • 数据提取:从日志、网页源码等文本中提取特定格式的数据。
  • 文本替换:批量查找替换特定模式的文本内容。
  • 日志分析:用正则从日志文件中筛选和提取关键信息。

正则引擎原理

正则表达式引擎主要有两种类型:DFA(确定性有限自动机)NFA(非确定性有限自动机)。JavaScript使用的是NFA引擎,它采用回溯算法进行匹配。

NFA引擎的特点是支持捕获组和反向引用,但在某些情况下可能出现"灾难性回溯"(Catastrophic Backtracking),导致匹配速度极慢。避免方法是尽量使用非贪婪量词、原子组或占有量词。

本工具使用浏览器原生的RegExp对象进行匹配,确保测试结果与实际使用环境完全一致。

常见问题

为什么正则匹配不到预期的内容?

常见原因:忘记转义特殊字符、量词使用不当、边界锚点位置错误。建议逐步构建正则,先匹配最简单的部分,再逐步添加条件。

贪婪模式和非贪婪模式有什么区别?

贪婪模式(如.*)会尽可能多地匹配字符,非贪婪模式(如.*?)会尽可能少地匹配。比如对"abcabc",a.*c匹配整个字符串,而a.*?c只匹配"abc"。

支持哪些正则修饰符?

支持g(全局匹配)、i(忽略大小写)、m(多行模式)、s(dotAll模式,让.匹配换行符)、u(Unicode模式)等JavaScript原生支持的修饰符。

捕获组怎么查看?

匹配结果面板会展示所有捕获组的内容,包括组号和匹配到的文本。你可以点击每个匹配项查看其捕获组的详细内容。

正则执行很慢怎么办?

可能是遇到了灾难性回溯。尝试简化正则、使用非贪婪量词、限制量词范围(如用{1,10}代替*),或者将复杂正则拆分为多个简单正则。

和Regex101等工具相比有什么优势?

本工具完全在浏览器本地运行,无需注册,打开即用。内置了中文语境下常用的正则模板,更贴合国内开发者的使用习惯。

正则表达式是程序员的必备技能,而一个好用的测试工具能让学习曲线变得平缓许多。