K
ken
首页文章🕐 时间转换📋 JSON 工具🖼️ Base64 图片🔑 密码生成 Cron 表达式🔤 命名转换📱 二维码生成#️⃣ 哈希计算🔡 编码转换🔍 正则表达式⚙️ 配置文件格式转化🔐 加解密⚖️ BMI 计算🎲 随机数据🗜️ 图片工具🌍 世界时钟🏛️ 罗马数字🔢 数字转中文💰 贷款计算

正则表达式

正则表达式(Regular Expression)是文本处理的"瑞士军刀"——表单验证、日志解析、数据清洗、代码重构中的查找替换,正则无处不在。但正则的语法晦涩难读,写错一个字符就完全匹配不到。实时反馈是调试正则的最有效方式。

这个工具提供实时匹配高亮、捕获分组展示、匹配位置定位和语法错误提示。支持 g/i/m/s/u/y 全部 6 种 flags。输入正则和测试文本,毫秒级看到匹配结果——所见即所得。

//gm

📖 正则表达式测试工具使用说明

什么是正则表达式?

正则表达式(Regular Expression,简称 regex 或 regexp)是一种描述字符串匹配模式的语法。它诞生于 1950 年代,由数学家 Stephen Kleene 提出,现在几乎所有编程语言都内置了正则支持。正则的核心价值在于用一行表达式替代几十行字符串处理代码——验证邮箱格式、提取日志中的 IP 地址、批量替换文本中的日期格式,都可以用一个正则表达式完成。

6 种 Flags 详解

  • g(global):全局匹配。没有 g 时只匹配第一个结果,加上 g 后匹配所有结果。大多数查找和替换场景都需要 g。
  • i(case-insensitive):忽略字母大小写。/hello/i 可以匹配 Hello、HELLO、heLLo。
  • m(multiline):多行模式。^ 和 $ 不仅匹配整个字符串的开始和结束,还匹配每一行的行首和行尾。
  • s(dotAll):点号匹配所有字符,包括换行符 \n。没有 s 时 . 不匹配换行符——这是新手最容易踩的坑之一。
  • u(unicode):Unicode 模式。启用后支持 \u{XXXXX} 语法和 Unicode 属性转义(如 \p{Script=Han} 匹配中文)。处理中文和 emoji 时必须开启。
  • y(sticky):粘性匹配。从正则的 lastIndex 位置开始匹配,且必须刚好在该位置匹配成功。用得较少,主要用于 tokenizer 场景。

常用正则速查

邮箱:[\w.-]+@[\w.-]+\.\w+ 手机号:1[3-9]\d{9} 身份证:\d{17}[\dXx] IP地址:\d{1,3}(\.\d{1,3}){3} URL:https?://[^\s]+ 日期(yyyy-mm-dd):\d{4}-\d{2}-\d{2} 中文:[\u4e00-\u9fa5]+ 空白行:^\s*$

常见错误

  • 忘记转义特殊字符:. * + ? [ ] ( ) {{ }} ^ $ | \ / 这些字符在正则中有特殊含义。如果要匹配字面值,必须用 \ 转义:匹配 1+1=2 的正则是 1\+1=2。
  • 贪婪匹配导致匹配过多:.* 默认是贪婪的,会尽可能多地匹配。link.* 会一次匹配全部而非单个标签。改为 .*? 使用惰性匹配。
  • 未考虑 Unicode:\w 默认只匹配 [a-zA-Z0-9_],不包含中文。要匹配中文需显式加 [\u4e00-\u9fa5] 或开启 u flag 用 Unicode 属性。
  • 灾难性回溯(Catastrophic Backtracking):嵌套量词如 (a+)+b 在匹配 aaaaaaaaaaaaa 且不匹配时会指数级回溯,导致浏览器卡死。避免嵌套量词。