(八)RegExp类型
2019-03-18 本文已影响0人
萘小蒽
js通过RegExp类型来支持正则表达式。
var expression = / pattern / flags ;
模式(pattern
)部分可以是任何的正则表达式。每个正则表达式都可以带一个或多个标志(flag
)以表明正则表达式的行为。
flag
匹配模式支持下列3个标志
-
g ------全局(
global
)模式,在模式将被应用于所有字符串,而不是在匹配到第一个符合项的时候立即停止;
匹配字符串中所有“at”的实例。
var pattern = / at / g;
- i ------不区分大小写模式,在模式匹配时忽略字符串的大小写;
****
匹配第一个“bat”或者“cat”,不区分大小写。
var pattern = / [bc]at / i;
-
m ------表示多行(
multiline
)模式,在到达一行文本末尾时还会继续查找下一行中是否存在与匹配的项;
匹配所有以“at”结尾的三个字符的组合,不区分大小写。
var pattern = / .at /gi;
2. 特殊元字符与转义
正则表达式中元字符所有字符如下
( [ { \ ^ $ | ) ? * + . } ]
当前需求匹配的字符包含以上元字符的时候,比如匹配"[bc]at",那我们需要对他们进行转义。比如
匹配第一个”[bc]at“,不区分大小写;
var pattern = /\[bc\]at/i
匹配所有”.at“,不区分大小写;
var pattern2 = /\.at/gi
3. RegExp实例属性
上面的例子都是用字面量形式来写正则表达式,也是我们常用的方法。
我们还可以使用RegExp构造函数.
var pattern1 = /[bc]at/i;
var pattern2 = new RegExp("[bc]at","i");
console.log(pattern1) // /[bc]at/i;
console.log(pattern2)// /[bc]at/i;
RegExp()
方法接收两个参数,字符串模式pattern
,和标志flag
;
需要转义的字符用法也需要双重转义:
var pattern1 = /\[bc\]at/i;
var pattern2 = new RegExp("\\[bc\\]at","i"); // “\”被转义成 “\\”
console.log(pattern1) // /\[bc\]at/i
console.log(pattern2) // /\[bc\]at/i
RegExp
的每个实例都具有以下属性,通过这些属性可以取得有关模式的各种信息。
-
global
:布尔值,表示是否设置了g
(全局
)标志。 -
ignoreCase
:布尔值,表示是否设置了i
(大小写
)标志。 -
lastIndex
:整数,表示开始搜索下一个匹配项的字符位置,从0算起。 -
multiLine
:布尔值,表示是否设置了m
(多行
)标志。 -
source
:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
其实没有多大用处,因为这些信息全都包含在模式声明中:
var pattern = /\[bc\]at/i;
/\[bc\]at/i
pattern.global;
//false
pattern.ignoreCase
//true
pattern.lastIndex
//0
pattern.source
//"\[bc\]at"