正则表达式测试

实时测试和调试正则表达式,可视化匹配结果。查看正则匹配、捕获组和标志,提供语法高亮和详细的匹配信息,用于模式开发和调试。

正则表达式测试 工具介绍

强大的正则表达式测试工具,帮助您实时测试、调试和理解正则模式。在您输入模式和测试文本时即时查看高亮显示的匹配结果,使正则开发更快速、更直观。

非常适合开发者、数据分析师、QA工程师以及任何从事文本处理、数据验证、网页抓取或模式匹配工作的人。该工具提供详细的匹配信息,包括捕获组、匹配位置和匹配计数,用于全面的正则分析。

我们的测试器支持所有JavaScript正则标志(全局、不区分大小写、多行、dotAll、unicode和sticky),并提供清晰的匹配可视化和语法高亮,以便更好地理解。测试复杂模式、验证输入格式并高效调试正则问题。

所有处理都在您的浏览器本地进行,不会向任何服务器传输数据。您的正则模式和测试文本完全私密和安全。

正则表达式测试 使用教程

使用方法

  1. 输入模式:在模式字段中输入您的正则表达式模式
  2. 设置标志:选择适当的正则标志(g、i、m、s、u、y)
  3. 输入测试文本:添加要针对模式测试的文本
  4. 查看匹配:在您输入时实时查看高亮显示的匹配
  5. 查看详情:检查捕获组、匹配位置和匹配计数
  6. 优化模式:根据结果调整您的正则表达式,直到它完美工作

正则标志说明

g - 全局

在文本中查找所有匹配,而不是在第一个匹配后停止:

  • 没有g:仅返回第一个匹配
  • 有g:返回文本中的所有匹配
  • 对于查找多个出现至关重要
  • 最常用的标志

i - 不区分大小写

匹配时忽略大小写:

  • 模式"hello"匹配"Hello"、"HELLO"、"HeLLo"
  • 对用户输入验证很有用
  • 简化需要匹配任何大小写的模式
  • 通常与其他标志结合使用

m - 多行

更改^和$锚点的行为:

  • ^匹配每行的开头(不仅仅是字符串开头)
  • $匹配每行的结尾(不仅仅是字符串结尾)
  • 处理多行文本时必不可少
  • 对逐行验证很有用

s - DotAll

使点(.)匹配换行符:

  • 通常.匹配除换行符外的任何字符
  • 使用s标志,.匹配包括\n在内的所有内容
  • 对跨多行匹配很有用
  • 简化跨行的模式

u - Unicode

启用完整的Unicode支持:

  • 正确处理Unicode字符和表情符号
  • 启用Unicode属性转义,如\p{Letter}
  • 正确处理代理对
  • 推荐用于国际文本

y - Sticky

仅从lastIndex位置开始匹配:

  • 匹配必须从确切的lastIndex位置开始
  • 对解析和标记化很有用
  • 比全局标志更严格
  • 用于顺序匹配的高级用例

常见用例

数据验证

  • 电子邮件验证:测试验证电子邮件地址的模式
  • 电话号码:验证电话号码格式
  • URL:检查URL模式并提取组件
  • 邮政编码:验证邮政编码格式
  • 信用卡:测试信用卡号码模式
  • 日期:验证日期格式(MM/DD/YYYY等)

文本处理

  • 提取数据:从文本中提取特定信息
  • 查找模式:定位特定的文本模式
  • 搜索和替换:在替换文本之前测试模式
  • 解析日志:从日志文件中提取信息
  • 清理数据:识别和删除不需要的字符

开发与调试

  • 调试正则:测试和修复不工作的正则模式
  • 学习正则:尝试模式以理解行为
  • 优化模式:测试不同的方法以提高效率
  • 验证输入:测试表单验证模式
  • API开发:测试API参数验证的模式

网页抓取

  • 提取URL:从HTML中查找和提取链接
  • 解析HTML:提取特定元素或属性
  • 查找模式:在网页内容中定位特定数据模式
  • 清理文本:删除HTML标签或不需要的格式

常用正则模式

基本模式

  • 电子邮件:[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
  • URL:https?://[^\s]+
  • 电话(美国):\d{3}-\d{3}-\d{4}或\(\d{3}\)\s?\d{3}-\d{4}
  • 日期(MM/DD/YYYY):\d{2}/\d{2}/\d{4}
  • 时间(HH:MM):\d{2}:\d{2}
  • 十六进制颜色:#[0-9A-Fa-f]{6}
  • IP地址:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

字符类

  • \d:任何数字(0-9)
  • \w:任何单词字符(a-z、A-Z、0-9、_)
  • \s:任何空白字符(空格、制表符、换行符)
  • \D:任何非数字
  • \W:任何非单词字符
  • \S:任何非空白字符
  • .:任何字符(没有s标志时除换行符外)

量词

  • *:0次或多次
  • +:1次或多次
  • ?:0次或1次(可选)
  • {n}:恰好n次
  • {n,}:n次或更多次
  • {n,m}:n到m次之间

锚点和边界

  • ^:字符串开头(或使用m标志时的行开头)
  • $:字符串结尾(或使用m标志时的行结尾)
  • \b:单词边界
  • \B:非单词边界

理解匹配结果

匹配高亮

匹配在测试文本中高亮显示:

  • 每个匹配都被视觉高亮显示
  • 使用全局标志显示多个匹配
  • 适当处理重叠匹配
  • 轻松视觉确认模式行为

捕获组

查看模式中的捕获组:

  • 括号()创建捕获组
  • 显示每个组的内容
  • 编号组(1、2、3等)
  • 对提取特定部分很有用

匹配信息

关于每个匹配的详细信息:

  • 找到的匹配总数
  • 每个匹配在文本中的位置
  • 每个匹配的长度
  • 捕获组的值

最佳实践

模式开发

  • 从简单开始,逐步增加复杂性
  • 使用包括边缘情况在内的多个示例进行测试
  • 使用全局标志查看所有匹配
  • 检查正面和负面测试用例
  • 考虑大文本的性能

要避免的常见错误

  • 忘记转义特殊字符(. * + ?等)
  • 查找所有匹配时不使用全局标志
  • 过度贪婪的量词(使用?进行非贪婪)
  • 不使用边缘情况和无效输入进行测试
  • 在简单就可以时使模式过于复杂

优化技巧

  • 尽可能使用特定的字符类而不是.
  • 适当时使用^和$锚定模式
  • 当不需要捕获时使用非捕获组(?:)
  • 通过谨慎使用量词避免过度回溯
  • 使用实际数据大小测试性能

核心功能

  • 实时测试:在您输入时即时查看匹配
  • 所有JavaScript标志:支持g、i、m、s、u、y标志
  • 匹配高亮:所有匹配的视觉高亮
  • 捕获组:查看捕获组的值
  • 匹配详情:位置和计数信息
  • 错误处理:无效模式的清晰错误消息
  • 无限制:在任何大小的文本上测试模式
  • 完全隐私:所有处理都在本地进行

使用技巧

  • 使用全局(g)标志查看所有匹配,而不仅仅是第一个
  • 使用包括边缘情况在内的各种输入测试您的模式
  • 从简单模式开始,逐步增加复杂性
  • 使用捕获组()提取匹配的特定部分
  • 启用不区分大小写(i)标志以进行灵活的文本匹配
  • 处理多行文本时使用多行(m)标志
  • 检查匹配计数以验证您找到了所有预期的匹配
  • 测试有效和无效的输入以确保模式准确性
  • 使用\b进行单词边界以仅匹配完整的单词
  • 记住使用反斜杠转义特殊的正则字符

常见场景

场景1:电子邮件验证

您需要在表单中验证电子邮件地址。使用各种电子邮件格式测试模式[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,},以确保它捕获有效的电子邮件并拒绝无效的电子邮件。

场景2:提取电话号码

您有包含各种格式电话号码的文本。使用带有全局标志的模式\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}查找所有电话号码,无论格式如何。

场景3:解析日志文件

您需要从日志文件中提取时间戳。测试模式\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}以匹配ISO格式的时间戳,并验证它捕获所有日志条目。

场景4:清理HTML标签

您想从文本中删除HTML标签。使用带有全局标志的模式<[^>]+>测试以匹配所有HTML标签,并验证它不会意外匹配内容中的合法<或>字符。

常见问题