简介
正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。这些模式被用于 RegExp 的exec
和test
方法, 以及 String 的 match
、replace
、search
和split
方法。
ES6规定了String对象的正则方法通过调用RegExp
的实例方法实现,从而做到所有与正则相关的方法,全都定义在RegExp对象上。
创建
1 | /pattern/flags //字面量 |
pattern
:正则表达式文本flags
:指定标志g
:全局匹配;找到所有匹配,而不是在第一个匹配后停止i
:忽略大小写m
:多行;匹配每行开头结尾u
:Unicode; 将模式视为Unicode序列点的序列,处理四个字节的 UTF-16 编码y
:粘性匹配; 仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引
u 修饰符
1 | var s = '𠮷'; |
y 修饰符
1 | var s = 'aaa_aa_a'; |
属性
RegExp.prototype.constructor
:创建该正则对象的构造函数。
RegExp.prototype.global
:是否开启全局匹配,也就是匹配目标字符串中所有可能的匹配项,而不是只进行第一次匹配。
RegExp.prototype.ignoreCase
:在匹配字符串时是否要忽略字符的大小写。
RegExp.prototype.lastIndex
:下次匹配开始的字符串索引位置。
RegExp.prototype.multiline
:是否开启多行模式匹配(影响 ^ 和 $ 的行为)。
RegExp.prototype.source
:正则对象的源模式文本。
RegExp.prototype.sticky
:是否开启粘滞匹配。
方法
RegExp.prototype.exec()
:在目标字符串中执行一次正则匹配操作。
1 | var re = /quick\s(brown).+?(jumps)/ig; |
RegExp.prototype.test()
:测试当前正则是否能匹配目标字符串。
RegExp.prototype.toSource()
:返回一个字符串,其值为该正则对象的字面量形式。覆盖了Object.prototype.toSource 方法.
RegExp.prototype.toString()
:返回一个字符串,其值为该正则对象的字面量形式。覆盖了Object.prototype.toString() 方法。
RegExp.prototype[@@match]()
:返回一个数组,它包括整个匹配结果,和通过捕获组匹配到的结果,如果没有匹配到则返回null.
RegExp.prototype[@@replace]()
:用替换器替换相应匹配项后的新字符串。
RegExp.prototype[@@search]()
:执行了一个在给定字符串中的一个搜索以取得匹配正则模式的项。
RegExp.prototype[@@split]()
:切割 String 对象为一个其子字符串的数组。
exec和match
- exec它的参数是字符串,match参数是正则.
1 | var re=new RegExp(//d/); |
- exec和match返回的都是数组。exec只会返回第一个满足条件的字符,match没有全局匹配(g)时,返回结果同exec。
1 | var str = 'abcda'; |