检查并测试正则表达式

在线测试正则表达式。分析匹配、修正错误并创建高效的数据挖掘模式。

正则表达式测试

正则表达式结果

匹配项

未找到匹配项

剩余部分

无不匹配内容

"正则表达式测试" 工具功能

测试正则表达式

允许实时验证 RegExp 模式,从而简化复杂搜索模式的开发和调试。

支持不同的标记和修改器

允许区分大小写敏感性、全局搜索、多线性模式和编程语言中使用的其他设置。

生成数据解析模板

可快速创建表达式为自动处理大型文本数组、日志和 HTML 代码。

使用指南与详细说明

什么是正则表达式(Regex)

正则表达式(Regex)是一种用于匹配模式的语言,用于搜索、验证和处理文本。

使用 regex,你可以:

  • 查找特定的文本片段(例如:邮箱、URL、数字)

  • 验证数据格式(表单校验)

  • 替换和清理文本

  • 从字符串中提取结构化数据

Regex 广泛应用于开发、数据分析、SEO 和自动化任务中。

“Regex Tester” 工具的功能

该工具允许你实时测试正则表达式,并立即查看结果。

你可以使用它:

  • 检查字符串是否匹配某个模式

  • 查看文本中的所有匹配项

  • 调试复杂的表达式

  • 在不编写代码的情况下测试不同的 regex 变体

常见 Regex 引擎及其差异

正则表达式并非完全通用。语法支持取决于编程语言和所使用的引擎。

引擎

使用场景

特点

JavaScript (ECMAScript)

浏览器、Node.js

lookbehind 支持有限(取决于版本)

PCRE

PHP、许多工具

最强大的引擎之一

Python (re)

Python

缺少部分 PCRE 功能

Java (Pattern)

Java

语法严格

.NET

C#

功能扩展强大

请始终在目标环境中测试你的 regex。注意 lookbehind 和 Unicode 支持的差异。为保证跨平台兼容性,建议使用更简单的模式。

Regex 修饰符(Flags)

Flags 是用于改变模式处理方式的参数。它们可以控制大小写、搜索范围(单行或多行)以及字符的解析方式。

标志

含义

i

忽略大小写

g

全局搜索

m

多行模式

s

dotall(. 包含 \n)

u

Unicode

Regex 中的特殊字符

类型

符号

描述

锚点(位置)

^

字符串开头

锚点(位置)

$

字符串结尾

锚点(位置)

\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 模式

任务

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}$

常见 Regex 错误

正则表达式看似简单,但包含许多容易忽略的细节。以下是常见错误。

语法与逻辑错误

  • 忘记转义:. 表示任意字符,而不是点号 → 使用 \.

  • 量词使用错误:*、+、{} 只作用于前一个元素

  • 贪婪与非贪婪混淆:.* 是贪婪的 → 使用 .*? 进行最小匹配

字符串匹配问题

  • 缺少锚点 ^$:否则可能在字符串任意位置匹配

  • 大小写敏感问题:"Test" ≠ "test" → 使用 i 标志

  • 空白字符误解:\s 包含制表符、换行符等,不仅仅是空格

实际使用错误

  • 使用 \w 处理 Unicode:大多数引擎中 \w = [A-Za-z0-9_]

  • 使用 regex 解析复杂格式(HTML、JSON):不可靠 → 应使用专用解析器

  • 表达式过于复杂:难以维护和调试

性能问题

  • 嵌套量词:例如 (.*)+ 可能导致灾难性回溯(catastrophic backtracking)

  • 无限制模式:.* 在大文本中可能严重影响性能

工具说明

alien

请注意,这个工具处理的正则表达式按照ECMAScript标准(JavaScript RegExp)进行处理。这意味着,模式的行为与它们在浏览器或JavaScript代码中的行为相同。一些构造,例如字符转义(/和/),可能会表现相同,即使它们看起来不同。如果您习惯于在其他语言中使用正则表达式(例如Python、PHP、.NET或POSIX),请注意,它们在语法和匹配逻辑上可能有所不同。

通过该工具可以测试正则表达式 (RegEx) 并验证其性能。RegEx 广泛应用于编程、数据处理和SEO分析。

它可用于搜索、替换和分析文本模式,使处理大量数据变得更加容易。

常见问题 (FAQ)

正则表达式 (regex) 是用于搜索、验证和操作文本的强大模式匹配工具。它们对于数据验证、搜索操作和文本处理任务至关重要。

我们的正则表达式测试器允许您输入模式和测试字符串,以实时查看匹配项。您可以尝试不同的模式,并查看文本的哪些部分与表达式匹配。

常见模式包括电子邮件验证、电话号码、日期、URL 和邮政编码。了解基本的元字符,例如 .、*、+、?、^、$ 和字符类,例如 \d、\w、\s。

常用的标志包括 i(忽略大小写)、g(全局搜索)、m(多行模式)和 u(Unicode 支持)。它们有助于更精确地控制搜索和匹配。

带有回溯的复杂模式在大型文本上可能会很慢。通过具体化、避免嵌套量词并尽可能使用锚点(^ 和 $)进行优化。使用实际数据大小测试性能。

捕获组是正则表达式中(由括号定义)的部分,允许您提取与模式匹配的文本的特定子部分。这对于重新格式化或提取特定数据很有用。

“贪婪”量词(例如,`.*`)将尝试匹配尽可能多的字符。“懒惰”量词(例如,`.*?`)将尝试匹配尽可能少的字符。选择取决于所需的匹配行为。

大多数现代正则表达式实现都支持 Unicode,这允许匹配不同语言和字母表中的字符。但是,确切的支持可能因编程语言和工具而异。

评价此工具
4.5(25 用户评价)