
正则表达式(regex)是一种用于匹配文本的紧凑模式——验证邮箱、提取日期、在日志文件中找出所有 URL。问题在于正则表达式以严苛著称:一个字符放错位置就可能导致模式什么都匹配不到、匹配过多,或者匹配到错误的内容。在不测试的情况下盲目编写模式并直接丢进生产代码,是产生隐性 bug 的根源。
在线测试正则表达式解决了这一问题。你粘贴示例文本,输入你的模式,立即就能逐字符高亮显示哪些匹配了,哪些没有。无需编译步骤,无需 print 语句,无需为了检查一个模式而重新运行整个程序。你可以在几秒钟内完成迭代。
大多数日常模式都由少数几种元素构成:
cat 匹配文本 "cat"。[abc] 匹配 a、b 或 c 中的任意一个。[0-9] 匹配任意数字,[a-z] 匹配任意小写字母。\d 表示任意数字,\w 表示任意单词字符,\s 表示任意空白字符。大写版本表示对应的否定形式。* 表示零次或多次,+ 表示一次或多次,? 表示零次或一次,{2,4} 表示两到四次。^ 匹配行首,$ 匹配行尾。它们将模式固定在某个位置,而不是让其在任意位置匹配。( ) 将部分内容组合在一起并捕获,用于提取。匹配美国电话号码:模式 \d{3}-\d{3}-\d{4} 匹配 "415-555-0199"——三位数字、一个连字符、三位数字、一个连字符、四位数字。针对 "call 415-555-0199 today" 测试,你将看到电话号码精确地高亮显示出来。
提取年份:\b(19|20)\d{2}\b 查找以 19 或 20 开头的四位年份,单词边界确保不会匹配更长数字的一部分。
验证简单邮箱:^[\w.+-]+@[\w-]+\.[\w.-]+$ 覆盖了常见邮箱地址的形式。现实中的邮箱验证出了名地复杂,这正是为什么在信任一个模式之前,针对大量样本输入进行测试如此重要。
.* 会尽可能多地匹配。若要匹配最短的片段,请使用惰性形式 .*?。在含有多个匹配的文本上,测试器会立即显示两者的差异。\.,否则 . 会匹配任意字符。括号、方括号和加号同样如此。^ 和 $,“验证”模式可能在本应无效的输入中匹配到一个有效子串。可靠的工作流是渐进式的:先写一小部分模式,确认它能匹配,再添加下一部分。在线测试使这个循环紧凑高效,因为反馈是即时的,你可以粘贴你关心的精确边界情况——空字符串、格式错误的输入、不常见但合法的值。
打开免费在线正则表达式测试器——输入模式,粘贴测试文本,实时查看高亮匹配结果和捕获分组。无需注册,完全在浏览器中运行。