正则表达式测试
测试和调试正则表达式模式,提供即时匹配结果和替换功能
匹配结果
未找到匹配项
匹配详情
输入正则表达式模式和测试文本以查看详细匹配信息
//
快速模式
替换功能
使用 $1, $2 等表示捕获组
此 sed 命令可用于 Unix/Linux/macOS 终端或 Windows 上的 Git Bash
关于正则表达式测试器
正则表达式测试器是一个强大的工具,用于实时测试和调试正则表达式。它提供模式匹配的即时反馈,在测试文本中高亮显示匹配项并显示详细的匹配信息。
此工具支持所有JavaScript正则表达式标志,并提供常用模式的快速访问。无论您是在验证用户输入、解析数据还是学习正则语法,此测试器都能使过程变得交互和可视化。
如何使用此工具
- 选择快速模板或输入您的正则表达式模式
- 设置适当的标志(g表示全局,i表示忽略大小写,m表示多行)
- 输入或加载示例测试文本
- 查看实时匹配结果和详细信息
- 使用替换功能测试替换操作
主要功能
- 实时正则测试,提供即时视觉反馈
- 支持所有JavaScript正则标志 (g, i, m, s, u, y)
- 匹配文本的语法高亮显示
- 详细的匹配信息,包含分组和位置
- 快速访问常用正则模式
- 匹配结果的复制功能
- 多行文本支持,格式正确
正则标志说明
g全局匹配 (g)
查找所有匹配项,而不是在第一个匹配后停止
i忽略大小写 (i)
不区分大小写匹配
m多行模式 (m)
^ 和 $ 匹配行的开始/结束,而不仅仅是字符串的开始/结束
使用技巧
- 使用全局标志(g)查找文本中的所有匹配项
- 用各种输入样本测试正则表达式以确保准确性
- 使用捕获组()提取匹配的特定部分
- 忽略大小写标志(i)对不区分大小写的搜索很有用
- 使用\b表示单词边界,仅匹配完整单词
- 测试边缘情况,如空字符串和特殊字符
常用模式
基础模式
\d任意数字 (0-9)\w单词字符 (a-z, A-Z, 0-9, _)\s空白字符.除换行符外的任意字符量词
+一个或多个*零个或多个?零个或一个{n}恰好n次锚点
^行开始$行结束\b单词边界实际示例
邮箱地址验证
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}匹配常见邮箱地址格式。
匹配: john.doe@example.com,support@codertools.net
电话号码(美国格式)
\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})捕获区号、交换机号和号码,支持多种分隔符。
匹配: (555) 123-4567,555.987.6543,555-123-4567
URL匹配
https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)匹配HTTP/HTTPS网址,支持可选www前缀和路径。
匹配: https://example.com,http://www.site.org/path
强密码验证
^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d@$!%*?&]{8,}$至少8位,包含大小写字母和数字。
匹配: Password123,MyStr0ngP@ss
高级功能
捕获组
使用括号()捕获匹配的部分用于替换或输出。
([0-9]{4})-([0-9]{2})-([0-9]{2})前瞻/后瞻
基于前后内容进行匹配但不包含它们。
(?=.*password)非捕获组
使用(?:pattern)分组但不占用捕获组编号。
(?:http|https)://sed 命令生成
根据正则表达式和替换文本生成等效的 sed 命令,便于在命令行中使用。
搜索模式(空替换)
替换文本为空时,仅打印匹配的行。
sed -n '/pattern/p' input.txt示例:模式:error
结果:打印所有包含 'error' 的行
替换模式(有替换内容)
提供替换文本时,生成替换命令。
sed 's/pattern/replacement/flags' input.txt示例:模式:foo,替换:bar
结果:将所有 'foo' 替换为 'bar'
特殊字符会自动转义。命令可用于 Unix/Linux/macOS 终端或 Windows 的 Git Bash。
最佳实践
从简单开始,逐步增加复杂度
逐步构建模式,避免一次性写出过于复杂的表达式。
尽可能使用非捕获组
不需要捕获时使用(?:...)以提高性能并保持编号清晰。
锚定您的模式
在适当时候使用^和$限制匹配范围,避免误匹配。
使用具体的字符类
用[a-zA-Z]+或\\d{3}替代.*以减少回溯。
转义特殊字符
匹配字面量时记得转义 . * + ? [ ] ( ) { } ^ $ \\ |。
用边界情况测试
用空字符串、超长文本和特殊字符测试模式稳定性。
常见问题排查
为什么我的模式什么都匹配不到?
检查是否启用合适的标志,并确认特殊字符已正确转义。
为什么我的正则导致浏览器卡住?
嵌套量词可能导致灾难性回溯,尝试简化模式。
为什么捕获组返回意外的值?
组编号从1开始,组0是完整匹配,(?:...)不计入编号。
为什么在不同语言中行为不同?
正则实现存在差异,尤其是后行断言和Unicode支持,需在目标环境中测试。