深入探索正则表达式的奥秘
正则表达式,有时真让人头疼!
让我们一起揭开正则表达式及其模式的神秘面纱。我们将深入研究这些看似杂乱无章的字符组合,了解它们背后的含义。通过本文,你将掌握创建正则表达式的技能,并能灵活运用它们。最后,我们还会推荐一些在线 RegEx 测试工具,方便你随时创建和测试你的正则表达式。
引言
正则表达式(RegEx)是一种强大的工具,它本质上是一个字符序列,可以作为搜索模式,用来查找特定的字符或字符串。
举个例子,如果你想确认一个字符串是否包含“apple”这个单词,你可以使用正则表达式“/apple/”在该字符串中进行搜索。再比如,你可以使用“/[0-9]/”来检查一个字符串是否含有0到9之间的数字。
正则表达式的应用
正则表达式在现代网络应用中有着广泛的用途。例如,网页表单验证、搜索引擎、集成开发环境 (IDE) 中的词法分析器、文本编辑器和文档编辑器等,都离不开正则表达式的身影。
我们经常使用“CTRL + F”在文档或代码中搜索特定的单词、短语或表达式。这正是正则表达式一个非常常见的应用场景。
在深入学习之前,我们先来看一个常见的正则表达式。
你能猜出🤔下面这个 RegEx 是用来做什么的吗?
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$
如果你猜不出来,别担心。我相信读完这篇文章,你就能轻松解答了。
现在,让我们从正则表达式的基础知识开始学习。
正则表达式的构成
首先,我们来看看上面正则表达式中的各种符号。
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$
上述正则表达式由许多符号、字符或标记组成。让我们逐一解析它们的含义:
标记 | 含义 |
^ | 表示字符串的开始。 |
(…) | 表示一个分组,其中捕获了括号内的所有内容。 |
[…] | 中括号 `[]` 内包含任何可以匹配的字符。例如,`[abc]` 将匹配 `a` 或 `b` 或 `c`。 |
a-z | 表示一组小写字母,从 `a` 到 `z`。 请注意,正则表达式是区分大小写的。 |
A-Z | 表示一组大写字母,从 `A` 到 `Z`。 |
0-9 | 表示从 `0` 到 `9` 的数字。 |
_ | 匹配下划线字符 `_`。 |
\ | 这是一个转义字符。 |
. | 匹配字符 `.` 本身。之所以使用转义字符,是因为符号 `.` 在正则表达式中本身是一个标记,表示匹配任何字符。 |
+ | 这是一个量词,表示匹配其前面的字符一次或多次。例如,`a+` 表示字符 `a` 出现一次或多次。 |
– | 匹配连字符字符 `-`。 |
@ | 匹配字符 `@`。 |
{} | 这是一个量词,用于表示字符出现的次数。例如,`a{3}` 表示字符 `a` 必须正好出现 3 次。 |
$ | 表示字符串的结尾。 |
解析给定的正则表达式
现在,有了这些基本标记的知识,让我们尝试解码上面的正则表达式:
- ^([a-zA-Z0-9_-.]+) 表示我们正在寻找一个字符串,它必须以一个或多个大写或小写字母数字字符、下划线、连字符或点开头。例如,任何类似 `user_name.01` 的内容都将匹配此模式。记住,这里不需要包含所有这些符号,只要包含其中任意一个 `[a-zA-Z0-9_-.]` 字符即可。
- `@` 字符匹配一个 `@` 符号。将它添加到之前的示例中,例如 `[email protected]` 将匹配到此部分。
- `([a-zA-Z0-9_-.]+)` 与第一点类似,它表示我们正在寻找一个包含一个或多个字母数字字符、下划线、连字符或点的字符串。将它添加到示例中,例如 `[email protected]` 适合这里。
- 正如你可能猜到的那样,这里表示一个电子邮件模式。继续, `.` 匹配一个 `.` 字符。继续我们的示例,比如 `[email protected]`.
- `([a-zA-Z]{2,5})$` 表示字符串必须以 2 到 5 个大写或小写字母结尾。如果我们把 `.com` 添加到之前的示例,可以得到 `[email protected]`,这是一个常见的电子邮件字符串模式。
综合以上所有内容,我们可以看出我们正在搜索一个电子邮件地址的字符串。现在我们可以使用这个表达式来验证任何电子邮件地址。如果我们的测试电子邮件地址与此模式匹配,我们可以认为它是一个有效的电子邮件地址。
PS – 这是网络上最常见的电子邮件地址的模式之一。
标记的类型
在正则表达式中,许多标记可以以各种组合形式使用,从而描述各种各样的表达式。下面我们来看看正则表达式中使用的各种类型的标记,并重点介绍每一类中最常用的标记。
基本标记
让我们先从最基本的标记开始。 这些标记几乎在每个正则表达式中都会用到,因此我们需要首先了解它们。
标记 | 含义 |
r | 匹配回车符。 |