Oh MyUtils

正则表达式测试器 - 在线测试正则表达式

实时测试和调试正则表达式,支持捕获组、语法高亮。包含常用模式库和正则表达式速查表。

常见问题

什么是正则表达式(regex)?

正则表达式(regex)是定义搜索模式的字符序列。它用于字符串内的模式匹配,支持验证(电子邮件、电话号码)、搜索和替换、数据提取和文本解析等操作。正则表达式几乎在所有编程语言和文本编辑器中都受支持。

正则表达式标志(g, i, m, s, u)是什么意思?

正则表达式标志修改模式匹配的方式。'g'(全局)查找所有匹配项,而不仅仅是第一个。'i'(不区分大小写)忽略字母大小写。'm'(多行)使 ^ 和 $ 匹配行边界,而不仅仅是字符串的开始/结束。's'(dotall)使 . 匹配换行符。'u'(unicode)启用完整的 Unicode 支持,包括代理对。

最常用的正则表达式模式有哪些?

常见模式包括:电子邮件验证(^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$)、URL 匹配(https?://[\w.-]+)、电话号码(\d{3}-\d{3}-\d{4})、IP 地址(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})和十六进制颜色(#[a-fA-F0-9]{6})。使用工具中的常用模式库一键插入。

什么是捕获组,如何使用它们?

捕获组由括号 () 定义,用于提取匹配项的特定部分。例如,在 '(\d{3})-(\d{4})' 中,组 1 捕获前三位数字,组 2 捕获后四位数字。当需要分组但不需要提取时,使用 (?:...)。命名组 (?<name>...) 使引用更具可读性。在替换中,使用 $1、$2 或 $<name> 来引用捕获的值。

这个正则表达式测试器安全吗?

是的。此工具使用 JavaScript 内置的 RegExp 引擎,100% 在您的浏览器中运行。任何模式或测试字符串都不会发送到任何服务器。您的数据完全保留在您的设备上,完全私密。该工具还包括超时保护,以防止复杂模式导致浏览器冻结(ReDoS 保护)。

测试正则表达式模式的最佳实践是什么?

从简单开始,逐步增加复杂性。用匹配和不匹配的示例进行测试。使用 'g' 标志查看所有匹配项。检查边界情况:空字符串、特殊字符和边界条件。对于验证模式,也要测试无效输入。当不需要捕获的值时,使用非捕获组 (?:...)。尽可能避免贪婪量词(.*, .+),因为它们可能导致性能问题。

代码示例

// Basic regex matching
const pattern = /\d{3}-\d{4}/g;
const text = "Call 555-1234 or 987-6543";
const matches = text.match(pattern);
console.log(matches); // ["555-1234", "987-6543"]

// Using RegExp constructor with flags
const regex = new RegExp("hello", "gi");
const result = "Hello HELLO hello".match(regex);
console.log(result); // ["Hello", "HELLO", "hello"]

// Capture groups
const emailRegex = /([\w.-]+)@([\w.-]+)/;
const email = "user@example.com";
const [, username, domain] = email.match(emailRegex);
console.log(username, domain); // "user" "example.com"

// Replace with capture groups
const formatted = "2026-02-01".replace(/(\d{4})-(\d{2})-(\d{2})/, "$2/$3/$1");
console.log(formatted); // "02/01/2026"

相关工具