浅析RegExp类型
前几天看了javascript中的RegExp类型,在这里总结一下,以帮助和我一样迷茫的小伙伴们!
RegExp类型来支持正则表达式,使用如下语法就可以创建一个正则表达式。
var expression = / pattern/ flags ;
其中pattern的部分可以是任何简单或复杂的正则表达式,可以包括字符类、限定符、分组、向前查找以及反向引用。每个正则表达式都可带一个或多个flags,用以标明正则表达式的行为。正则表达式的匹配模式支持下列3个标志:
1. g :表示全局模式,即模式将被应用于所有字符串。
2. i:表示不区分大小写模式,即再确定匹配时忽略模式与字符串的大小写。
3. m: 表示多行模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。
因此一个正则表达式就是一个模式与上述3个标志的组合体。不同组合产生不同结果,来看几个例子
var pattern1 = /at/g; **//匹配字符串中所有“at”的实例**
var pattern2 = /[bc]at/i; **//匹配第一个“bat”或 “cat”,不区分大小写**
var pattern3 = /.at/gi; **// 匹配所有以“at”结尾的3个字符的组合,不区分大小写**
当然与其他语言中的正则表达式类似,模式中的所有元字符都必须转义。正则表达式中的元字符包括:
**( [ { \ ^ $ | ) ? * + . ] }**
这些元字符在正则表达式中都有一或多种特殊用途,因此如果想要匹配字符串中包含的这些字符,就必须对他们进行转义。看几个例子:
/*
* 匹配第一个”bat"或"cat",不区分大小写
*/
var pattern1=/[bc]at/i;
/*
* 匹配第一个”[bc]at",不区分大小写
*/
var pattern2 = /\[bc\]at/i;
以上举得例子都是以字面量形式来定义的正则表达式。另一种创建正则表达式的方法是使用RegExp构造函数,它接收两个参数:一个是要匹配的字符串模式,另一个是可选的标志字符串。可以使用字面量定义的任何表达式,都可以使用构造函数来定义,如下面几个例子:
/*
* 匹配第一个”bat"或"cat",不区分大小写
*/
var pattern1=/[bc]at/i;
/*
*与pattern1相同,只不过是使用构造函数创建的
*/
var pattern2 = new RegExp("[bc]at","i");
在此,pattern1 和pattern2是两个完全等价的正则表达式。
需要注意的是:传递给RegExp构造函数的两个参数都是字符串(不能把正则表达式字面量传递给RegExp构造函数)由于RegExp构造函数的模式参数是字符串,所以某些情况下要对字符串进行双重转义。下表给出了一些模式,左边是这些模式的字面量形式,右边是使用RegExp 构造函数定义相同模式时使用的字符串。
以上就是一些RegExp类型的简单的用法,希望对大家有所帮助!