一、 RegExp 类型
JavaScript 通过 RegExp 类型来支持正则表达式。使用类似与 Perl 的语法,可以创建一个正则表达式。如下:
var expressing = /parrten/flags;
其中,正则表达式匹配模式支持三个标志。包括:g(全局模式)、i(不区分大小写)、m(多行模式)。同样,也可以使用 RexExp 构造函数,如下:
var pattern = new RegExp("[bc]at", "i");
由于 RegExp 构造函数使用的是字符串,所以有些时候要使用双重转义。
1. RegExp 实例属性
- global: 布尔值,是否设置了 g 标志。
- ignoreCase: 布尔值,表示是否设置了 i 标志。
- lastIndex: 整数,表示开始搜索下一匹配项的起始位置,从0算起。
- multiline: 布尔值,是否设置了 m 标志。
- source: 字符串,正则表达式的字面量表示形式。
2. RegExp 实例方法
RexExp 的主要方法是 exec(),该方法接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项的数组,但是该数组包含两个额外的属性,index 和 input。其中 index 表示匹配项在字符串中的未知,而 input 则表示应用正则表达式的字符串。
var text = "mom and dad and baby";
var pattern = /mom (and dad (and baby)?)?/gi;
var matches = pattern.exec(text);
alert(matches.index); // 0
alert(matches.input); // "mom and dad and baby"
alert(matches[0]); // "mom and dad and baby"
alert(matches[1]); // "and dad and baby"
alert(matches[2]); // "and baby"
正则表达式的第二个方法是 test(), 它同样接受一个字符串参数。该模式与该字符串匹配的情况下,返回 true,否则返回 false。
另外,RegExp 的实例中,toLocalString 和 toString 都返回该正则表达式的字面量表示形式。
3. RegExp 的构造函数属性
在其他语言当中,有点类似与类方法。这些属性适用于作用域中的所有正则表达式,并且基于所执行的最后一次正则表达式而变化。而且它们都支持两种方式访问,分别是一个长属性名和一个短属性名。
- input $_ 最近一次所匹配的字符串。
- lastMatch $& 最近一次匹配项
- lastParen $+ 最近一次匹配组
- leftContext $` 匹配字符串之前的字符串
- rightContext $' 匹配字符串之后的字符串
- multiline $* 表示是否使用多行文本
网友评论