跳转到主要内容
模块 1 · 第 4 课(共 4)课程中的4/32~10 min
模块课程(4/4)

转义元字符

正则表达式中的某些字符具有特殊含义:它们被称为 元字符。如果您想匹配文字字符(例如真实的 .,真正的+,真正的括号)您需要在它们前面加上前缀 反斜杠 \,转义它们。

要记住的元字符有十二个:

Code
.  *  +  ?  ^  $  |  \  (  )  [  ]  {  }  /

(/ 并不是真正的引擎元字符,但必须在 JavaScript 文字符号 /.../。)

Code
Pattern: \$\d+\.\d\d
Sample:  Prezzi: $9.99, $12.50, totale $22.49.
                 ^^^^^  ^^^^^^         ^^^^^^

这里我们转义 $ (字符串结尾锚点)和 . (通配符)以匹配 价格格式中的文字字符“美元+数字+点+两位数字”。

JS 字符串中的双反斜杠

当你在 JavaScript 字符串中编写模式时(就像你在我们的代码中所做的那样) 练习)反斜杠必须加倍。 JS 字符串 '\\d' 包含 两个字符(\ 和 d),并且正是正则表达式模式 \d。

JS
const re1 = /\d+/; // literal notation: a single backslash
const re2 = new RegExp('\\d+'); // string: double backslash

课程编辑器显示模式已解码(您会看到一个 \d);你不必自己加倍任何东西。

12个特殊元字符

引擎中具有特殊含义的字符正好是12个:\\\ ^ $ . | ? * + ( ) [ {。如果要将它们作为文字文本进行匹配,则必须在它们前面添加反斜杠。在某些环境中(例如非原始 JS 字符串),您可能需要加倍反斜杠 (\\\\)。

尝试一下

锻炼#regex.m1.l4.e1
尝试:0加载中...

查找“$N.NN”格式的每个价格(美元、一位或多位数字、点、两位数字)。记住要转义“$”和“.”。

正在加载编辑器...
显示提示

$ 必须转义为 \\$,点为 \\。 - 否则该点与任何内容匹配。

3 次尝试后可用的解决方案

复习练习

锻炼#regex.m1.l4.e2
尝试:0加载中...

找到文本中每个字面上的问号“?”。 `?` 是一个元字符:必须对其进行转义。

正在加载编辑器...
显示提示

无处可逃,?将是一个量词(模块 2)。前面加一个\\。

3 次尝试后可用的解决方案

额外的挑战

锻炼#regex.m1.l4.e3
尝试:0加载中...

Find all occurrences of `.tar.gz` in the text, ensuring that the dots are matched literally.

正在加载编辑器...
显示提示

在每个点之前插入反斜杠以将其转义。

3 次尝试后可用的解决方案