Skip to content

Latest commit

 

History

History
75 lines (53 loc) · 2.54 KB

javascript-the-good-parts-part-3.md

File metadata and controls

75 lines (53 loc) · 2.54 KB

JavaScript: The Good Parts - Part 3

Regular Expressions

我们都知道,可以用 / / 来声明一个正则表达式的字面量,在后面还可以上一个正则表达式的标识

  • g 全局的,匹配多次,但是不同的方法对 g 标识的处理不同
  • i 忽略大小写
  • m 多行

Regexp Group

正则表达式的分组有 4 种

  • 捕获型 () - 在 () 中匹配的字符都会被保存下来,可以用 \1 \2 来引用获取
  • 非捕获型 (?: ) - 可以用非捕获的分组来进行几个正则表达式因子的组合
  • 向前正向匹配 (?= ) - 不建议使用
  • 向前负向匹配 (?! ) - 不建议使用

Regexp Factor

正则表达式因子,可以是一个字符,一个由 () 包围的组,一个字符类,或者是一个转义序列

在表达式因子中(一般就是在 () 中),如果遇到下列字符的时候,会被当成运算符,而不会被当成字面量,如果想让你的字符表示字面量,则需要用 \ 进行转义

字符 运算符作用 转义
\ 当成转义字符使用 \\
/ 误以为正则的结束 /
[ or ] 包括一个字符类 \ [ or \ ]
( or ) 包括一个分组 \ ( or \ )
{ or } 正则的量词 \ { or \ }
? 正则的量词 ?
+ 正则的量词 \+
* 正则的量词 \*
当成正则的一个分支 \|
. 当成任意字符 \.
^ 会匹配文本的开始 ^
$ 会匹配文本的结束 $

Regexp Class

我们可以用 [] 来包括我们的字符类,在字符类中也会遇到字符转义的问题

字符 运算符作用 转义
\ 当成转义字符使用 \\
/ 误以为正则的结束 /
[ or ] 包括一个字符类 \ [ or \ ]
- 当成表示范围的字符 \-
^ 当成非操作 ^

Regexp Choice

我们用 | 来创建我们的正则分支,如 /in|int/into 与该正则匹配的时候,就只会匹配到 in 而不会匹配 int 因为 in 已经成功匹配了

Regexp Escape

除了我们自己可以对字符的转义之外,JavaScript 还提供了一些给我们使用

  • \d - 相当于 [0-9]
  • \D - 相当于 [^0-9]
  • \s - 相当于空白
  • \w - 相当于 [0-9A-Za-z]

Regexp Quantifier

正则的量词比较简单

  • {num, } - 匹配 num 次或多次
  • {num1, num2} - 匹配 num1 次到 num2 次
  • ? - 相当于 {0, 1}
  • * - 相当于 {0, }
  • + - 相当于 {1, }