正则表达式

1、正则表达式常用修饰符

  • a+b +号代表前面的字符必须至少出现一次
  • a*b * 号代表前面的字符可以不出现,也可以出现一次或者多次
  • a?b ? 问号代表前面的字符最多只可以出现一次

* 和+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配


  • [ABC] 匹配 [...] 中的所有字符
  • [^ABC] 匹配除了[...] 中的所有字符
  • [A-Z] [A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示匹配所有小写字母
  • . 匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]
  • [\s\S] 匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行
  • \w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_]

  • \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符
  • \f 匹配一个换页符。等价于\x0c和\cL
  • \n 匹配一个换行符。等价于\x0a和\cJ
  • \r 匹配一个回车符。等价于\x0d和\cM
  • \t 匹配一个制表符。等价于\x09和\cI
  • \v 匹配一个垂直制表符。等价于\x0b和\cK
  • \b 匹配一个单词边界的位置
  • \B 表示非单词边界

  • $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'
  • () 标记一个子表达式的开始和结束位置
  • [ 标记一个中括号表达式的开始
  • { 标记限定符表达式的开始
  • | 指明两项之间的一个选择

  • {n} n是一个非负整数,匹配n次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但能匹配 "food" 中的所有 o
  • {n,} n是一个非负整数,至少匹配n次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
  • {n,m} m,n是非负整数,n<=m。最少匹配n次,最多匹配m次

2、字符串的正则方法

ES6 出现之前,字符串对象共有 4 个方法,可以使用正则表达式:match()、replace()、search()和split()。

ES6 将这 4 个方法,在语言内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法,全都定义在RegExp对象上。

/g 全局匹配

/i 忽略大小写

(1)String.prototype.match 调用 RegExp.prototype[Symbol.match]

(2)String.prototype.replace 调用 RegExp.prototype[Symbol.replace]

(3)String.prototype.search 调用 RegExp.prototype[Symbol.search]

如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1

(4)String.prototype.split 调用 RegExp.prototype[Symbol.split]


版权声明:本文为weixin_48625707原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。