无需登录 数据私有 本地保存

正则表达式替换沙盒 - 多模式测试

10
0
0
0

🔍 正则表达式替换沙盒

多模式测试 · 实时预览 · 分组捕获 · 串联替换管道

源文本 0 字符
匹配预览 — 选中规则在源文本中的匹配
👆 选择一条规则并输入正则表达式,匹配内容将在此高亮显示
正则规则 — 按顺序串联执行
暂无规则,点击"添加规则"开始
替换结果
0 字符
正则表达式知识点 & 常见问题

正则表达式(Regular Expression,简称Regex)是一种用于描述文本模式的强大工具。它由特殊字符和普通字符组成,用于匹配、查找、替换和验证字符串。常见用途包括:表单验证(邮箱、手机号)、日志分析、数据清洗、代码重构、SEO URL优化等。正则表达式几乎被所有编程语言支持(JavaScript、Python、Java、PHP等),是开发者必备技能之一。

  • g全局匹配(global):查找所有匹配项,而非在第一个匹配后停止。替换时必须使用此标志才能替换全部匹配。
  • i忽略大小写(ignoreCase):匹配时不区分字母大小写。
  • m多行模式(multiline):使 ^$ 匹配每一行的开头和结尾,而非整个字符串的开头和结尾。
  • sdotAll模式:使 .(点号)匹配包括换行符 \n 在内的所有字符。ES2018引入。
  • uUnicode模式:启用完整的Unicode支持,正确处理代理对(如emoji)、Unicode属性转义等。

在替换文本中,可以使用特殊标记引用匹配到的内容:

  • $1, $2, $3... — 引用第1、2、3个捕获组(括号中的子表达式)匹配的内容。
  • $& — 引用整个匹配的文本。
  • $` — 引用匹配之前的文本。
  • $' — 引用匹配之后的文本。
  • $$ — 插入一个字面量 $ 符号。

示例:正则 (\d{3})-(\d{4}) 匹配电话号,替换为 ($1) $2 可将 138-1234 变为 (138) 1234

贪婪匹配(默认):量词 * + ? {n,} 会尽可能多地匹配字符。例如正则 <.*><div>hello</div> 中会匹配整个字符串。

非贪婪匹配(懒惰):在量词后加 ?,如 *? +? ?? {n,}?,会尽可能少地匹配。例如 <.*?> 只会匹配 <div>

最佳实践:处理HTML/XML标签时,通常使用非贪婪匹配 <.*?> 来逐个匹配标签,避免过度匹配。

用途正则表达式说明
邮箱[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}匹配大多数邮箱格式
手机号(中国)1[3-9]\d{9}11位手机号
URLhttps?://[^\s/$.?#].[^\s]*匹配HTTP/HTTPS链接
日期 YYYY-MM-DD\d{4}-\d{2}-\d{2}基本日期格式
IP地址\b(?:\d{1,3}\.){3}\d{1,3}\bIPv4地址
HTML标签<\/?[a-zA-Z][^>]*>匹配HTML标签

  1. 检查标志:确认是否遗漏了 g(全局)或 i(忽略大小写)标志。
  2. 转义特殊字符:字符 . * + ? ^ $ { } [ ] ( ) | \ / 需要转义为 \. \* 等。
  3. 使用本工具逐个测试:添加单条规则,观察匹配预览中的高亮,确认正则是否正确命中目标。
  4. 检查贪婪匹配:尝试将 .* 改为 .*? 使用非贪婪模式。
  5. 逐步构建:从简单模式开始,逐步添加复杂度,每次验证匹配结果。