检查并测试正则表达式
在线测试正则表达式。分析匹配、修正错误并创建高效的数据挖掘模式。
正则表达式测试
正则表达式结果
匹配项
未找到匹配项
剩余部分
无不匹配内容
在线测试正则表达式。分析匹配、修正错误并创建高效的数据挖掘模式。
未找到匹配项
无不匹配内容
允许实时验证 RegExp 模式,从而简化复杂搜索模式的开发和调试。
允许区分大小写敏感性、全局搜索、多线性模式和编程语言中使用的其他设置。
可快速创建表达式为自动处理大型文本数组、日志和 HTML 代码。
正则表达式(Regex)是一种用于匹配模式的语言,用于搜索、验证和处理文本。
使用 regex,你可以:
查找特定的文本片段(例如:邮箱、URL、数字)
验证数据格式(表单校验)
替换和清理文本
从字符串中提取结构化数据
Regex 广泛应用于开发、数据分析、SEO 和自动化任务中。
该工具允许你实时测试正则表达式,并立即查看结果。
你可以使用它:
检查字符串是否匹配某个模式
查看文本中的所有匹配项
调试复杂的表达式
在不编写代码的情况下测试不同的 regex 变体
正则表达式并非完全通用。语法支持取决于编程语言和所使用的引擎。
引擎 | 使用场景 | 特点 |
|---|---|---|
JavaScript (ECMAScript) | 浏览器、Node.js | lookbehind 支持有限(取决于版本) |
PCRE | PHP、许多工具 | 最强大的引擎之一 |
Python (re) | Python | 缺少部分 PCRE 功能 |
Java (Pattern) | Java | 语法严格 |
.NET | C# | 功能扩展强大 |
请始终在目标环境中测试你的 regex。注意 lookbehind 和 Unicode 支持的差异。为保证跨平台兼容性,建议使用更简单的模式。
Flags 是用于改变模式处理方式的参数。它们可以控制大小写、搜索范围(单行或多行)以及字符的解析方式。
标志 | 含义 |
|---|---|
i | 忽略大小写 |
g | 全局搜索 |
m | 多行模式 |
s | dotall(. 包含 \n) |
u | Unicode |
类型 | 符号 | 描述 |
|---|---|---|
锚点(位置) | ^ | 字符串开头 |
锚点(位置) | $ | 字符串结尾 |
锚点(位置) | \b | 单词边界 |
锚点(位置) | \B | 非单词边界 |
元字符 | . | 匹配除换行符(\n)外的任意字符 |
元字符 | | | 或(OR)操作符 |
元字符 | \ | 转义字符 |
字面量 | a | 字符 “a” |
字面量 | ab | 字符串 “ab” |
量词 | * | 0 次或多次 |
量词 | ? | 0 次或 1 次 |
量词 | + | 1 次或多次 |
量词 | {5} | 恰好 5 次 |
量词 | {5,} | 5 次或更多 |
量词 | {5,10} | 5 到 10 次 |
字符类 | \s | 空白字符 |
字符类 | \S | 非空白字符 |
字符类 | \w | 单词字符(字母、数字、下划线) |
字符类 | \W | 非单词字符 |
字符类 | \d | 数字 |
字符类 | \D | 非数字 |
转义序列 | [\b] | 退格符 |
转义序列 | \c | 控制字符 |
转义序列 | \n | 换行符 |
转义序列 | \t | 制表符 |
转义序列 | \r | 回车符 |
转义序列 | \ZZZ | 八进制字符 |
转义序列 | \xZZ | 十六进制字符 |
转义序列 | \0 | 空字符 |
转义序列 | \v | 垂直制表符 |
分组 | (xyz) | 捕获组 |
分组 | (?:xyz) | 非捕获组 |
集合与范围 | [xyz] | 匹配 x、y 或 z |
集合与范围 | [^xyz] | 不匹配 x、y、z |
集合与范围 | [a-q] | 匹配 a 到 q |
集合与范围 | [0-7] | 匹配 0 到 7 |
替换模式 | $` | 匹配前的文本 |
替换模式 | $' | 匹配后的文本 |
替换模式 | $+ | 最后一个捕获组 |
替换模式 | $& | 整个匹配 |
替换模式 | $n | 第 n 个捕获组(如 $1, $2) |
前后断言(Lookaround) | (?=xyz) | 正向先行断言 |
前后断言(Lookaround) | (?!xyz) | 负向先行断言 |
前后断言(Lookaround) | (?<=xyz) | 正向后行断言 |
前后断言(Lookaround) | (?<!xyz) | 负向后行断言 |
注释 | (?#comment) | 注释(引擎忽略) |
任务 | Regex |
|---|---|
仅数字 | ^\d+$ |
仅拉丁字母 | ^[A-Za-z]+$ |
日期(DD.MM.YYYY) | \d{2}\.\d{2}\.\d{4} |
域名 | ^[a-z0-9.-]+\.[a-z]{2,}$ |
URL | https?:\/\/[^\s]+ |
Slug | ^[a-z0-9-]+$ |
邮箱(基础) | ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
邮箱(严格) | ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ |
电话(通用) | ^\+?\d{7,15}$ |
HTML 标签 | <[^>]+> |
强密码 | ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{12,}$ |
UUID | ^[0-9a-fA-F-]{36}$ |
HEX 颜色 | ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ |
IP (IPv4) | ^(\d{1,3}\.){3}\d{1,3}$ |
MAC 地址 | ^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$ |
正则表达式看似简单,但包含许多容易忽略的细节。以下是常见错误。
忘记转义:. 表示任意字符,而不是点号 → 使用 \.
量词使用错误:*、+、{} 只作用于前一个元素
贪婪与非贪婪混淆:.* 是贪婪的 → 使用 .*? 进行最小匹配
缺少锚点 ^ 和 $:否则可能在字符串任意位置匹配
大小写敏感问题:"Test" ≠ "test" → 使用 i 标志
空白字符误解:\s 包含制表符、换行符等,不仅仅是空格
使用 \w 处理 Unicode:大多数引擎中 \w = [A-Za-z0-9_]
使用 regex 解析复杂格式(HTML、JSON):不可靠 → 应使用专用解析器
表达式过于复杂:难以维护和调试
嵌套量词:例如 (.*)+ 可能导致灾难性回溯(catastrophic backtracking)
无限制模式:.* 在大文本中可能严重影响性能
请注意,这个工具处理的正则表达式按照ECMAScript标准(JavaScript RegExp)进行处理。这意味着,模式的行为与它们在浏览器或JavaScript代码中的行为相同。一些构造,例如字符转义(/和/),可能会表现相同,即使它们看起来不同。如果您习惯于在其他语言中使用正则表达式(例如Python、PHP、.NET或POSIX),请注意,它们在语法和匹配逻辑上可能有所不同。
通过该工具可以测试正则表达式 (RegEx) 并验证其性能。RegEx 广泛应用于编程、数据处理和SEO分析。
它可用于搜索、替换和分析文本模式,使处理大量数据变得更加容易。
正则表达式 (regex) 是用于搜索、验证和操作文本的强大模式匹配工具。它们对于数据验证、搜索操作和文本处理任务至关重要。
我们的正则表达式测试器允许您输入模式和测试字符串,以实时查看匹配项。您可以尝试不同的模式,并查看文本的哪些部分与表达式匹配。
常见模式包括电子邮件验证、电话号码、日期、URL 和邮政编码。了解基本的元字符,例如 .、*、+、?、^、$ 和字符类,例如 \d、\w、\s。
常用的标志包括 i(忽略大小写)、g(全局搜索)、m(多行模式)和 u(Unicode 支持)。它们有助于更精确地控制搜索和匹配。
带有回溯的复杂模式在大型文本上可能会很慢。通过具体化、避免嵌套量词并尽可能使用锚点(^ 和 $)进行优化。使用实际数据大小测试性能。
捕获组是正则表达式中(由括号定义)的部分,允许您提取与模式匹配的文本的特定子部分。这对于重新格式化或提取特定数据很有用。
“贪婪”量词(例如,`.*`)将尝试匹配尽可能多的字符。“懒惰”量词(例如,`.*?`)将尝试匹配尽可能少的字符。选择取决于所需的匹配行为。
大多数现代正则表达式实现都支持 Unicode,这允许匹配不同语言和字母表中的字符。但是,确切的支持可能因编程语言和工具而异。