# 课程 15:其他元字符

这一小节将介绍一些其他的元字符,以及捕获组的结果。

我们已经学习了最常见的元字符:数字 \d、空白符 \s、字母和数字 \w,但是正则表达式还提供了一种捕获每个元字符的相反集合的方法,即使用大写字母。例如,\D 表示任何非数字字符,\S 表示任何非空白字符,\W 表示任何非字母或数字字符 (如标点符号)。灵活使用这些元字符,会使编写正则表达式更容易

此外,还有一个特殊的元字符 \b,它匹配单词和非单词字符之间的边界。它在捕获整个单词时最有用,例如模式 \w+\b

在这些课程中,我们不会详细探讨的一个概念是反向引用 (back referencing) (译者注:见反向引用),这主要是因为它在不同的实现里有所区别。但是,许多系统都允许您通过使用 \0 (通常是完全匹配的文本)、\1 (组 1)、\2 (组 2) 等来引用捕获的组。这在某些情况下很有用,举个例子,当您需要使用正则表达式搜索文本中的两个数字并交换它们的位置时,可以先使用模式 (\d+)-(\d+) 来搜索,再使用 \2-\1 来替换。下面是一段 JavaScript 代码示例:

"123-456".replace(
  /(\d+)-(\d+)/, // searchValue
  "$2-$1" // replaceValue, $1、$2 等价于上文的 \1、\2
) 
// Output => "456-123"

下面是一些不同的字符串,请尝试练习我们在前面的课程中学到的各种类型的元字符,并观察它们所匹配到的内容。

练习 15:匹配其他特殊字符
Task Text Result
match The quick brown fox jumps over the lazy dog.
match There were 614 instances of students getting 90.0% or above.
match The FCC had to censor the network for saying &$#*@!.
解决上述任务以继续下一个问题,或者查看答案