本章小结

正则表达式是表示字符串模式的对象,使用自己的语言来表达这些模式:

  • /abc/:字符序列

  • /[abc]/:字符集中的任何字符

  • /[^abc]/:不在字符集中的任何字符

  • /[0-9]/:字符范围内的任何字符

  • /x+/:出现一次或多次

  • /x+?/:出现一次或多次,非贪婪模式

  • /x*/:出现零次或多次

  • /x??/:出现零次或多次,非贪婪模式

  • /x{2,4}/:出现两次到四次

  • /(abc)/:元组

  • /a|b|c/:匹配任意一个模式

  • /\d/:数字字符

  • /\w/:字母和数字字符(单词字符)

  • /\s/:任意空白字符

  • /./:任意字符(除换行符外)

  • /\b/:单词边界

  • /^/:输入起始位置

  • /$/:输入结束位置

正则表达式有一个test方法来测试给定的字符串是否匹配它。 它还有一个exec方法,当找到匹配项时,返回一个包含所有匹配组的数组。 这样的数组有一个index属性,用于表明匹配开始的位置。

字符串有一个match方法来对正确表达式匹配它们,以及search方法来搜索字符串,只返回匹配的起始位置。 他们的replace方法可以用替换字符串或函数替换模式匹配。

正则表达式拥有选项,这些选项写在闭合斜线后面。 i选项使匹配不区分大小写。 g选项使表达式成为全聚德,除此之外,它使replace方法替换所有实例,而不是第一个。 y选项使它变为粘性,这意味着它在搜索匹配时不会向前搜索并跳过部分字符串。 u选项开启 Unicode 模式,该模式解决了处理占用两个代码单元的字符时的一些问题。

正则表达式是难以驾驭的强力工具。它可以简化一些任务,但用到一些复杂问题上时也会难以控制管理。想要学会使用正则表达式的重要一点是:不要将其用到无法干净地表达为正则表达式的问题。