一、RegExp类型
1、字面量法
var expression=/ pattern /flags;
其中模式(pattern)部分可以是任何简单或者复杂的正则表达式,每个正则表达式都可带有一个或多个标志(flags)
g:表示全局(global)模式,将应用与所有字符串。
i:表示不区分大小写(case-insensitive)模式,匹配字符串时忽略大小写。
m:表示多行(multiline)模式,到达一行文本末时还会继续查找下一行中是否存在与模式匹配的项。
/* *匹配字符串中所有“at”的实例 */ var pattern1=/at/g; /* *匹配第一个“bat”或者“cat”不区分大小写 */ var pattern2=/[bc]at/i; /* *匹配所有以“at”结尾的3个字符的组合,不区分大小写 */。 var pattern3=/.at/gi;
模式中使用的所有元字符都必须转义。正则表达式中的元字符包括:
([{\^$|)?*+.]}
如果要匹配这些字符,就需要对他们进行转义,转义用"\"来进行
*匹配第一个“bat”或者“cat”不区分大小写 */ var pattern1=/[bc]at/i; /* *匹配第一个“[bc]at”,不区分大小写 */ var pattern2=/\[bc\]at/i; /* *匹配所有以“at”结尾的3个字符的组合,不区分大小写 */。 var pattern3=/.at/gi; /* *匹配所有“.at”,不区分大小写 */。 var pattern4=/\.at/gi;
2、构造函数法
其中特殊字符的转义用“\\”表示
/* *匹配第一个“bat”或者“cat”不区分大小写 */ var pattern1=/[bc]at/i; /* *与pattern1相同,只不过是用构造函数创建的 */ var pattern2=new RegExp("[bc]at","i");
构造函数法中,对于元字符,用//进行转义
使用正则表达式字面量与使用RegExp构造函数创建的正则表达式不一样。正则表达式字面量始终会共享一个RegExp实例,而使用构造函数创建的每一个新RegExp实例都是一个新实例
二、RegExp实例属性
RegEXp的每个实例都有下列属性
- global:布尔值,表示是否设置了g标志。
- ignoreCase:布尔值,表示是否设置了i标志。
- lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
- multiline:布尔值,表示是否设置了m标志。
- source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
三、RegExp实例方法
1、exec(),该方法是专门为捕获组而设计的,exec()接收一个参数,即要应用模式的字符串,然后返回包含第一个匹配信息的数组;或者在没有匹配项的情况下返回null
var text="mom and dad and baby"; var pattern=/mom(and dad(and baby)?)?/gi;
2、toString()和toLocaleString()返回正则表达式字面量,与创建正则表达式的方式无关
四、RegExp构造函数属性
五、模式的局限性
虽说js的正则表达式功能比较完备,但任然缺少高级正则表达式的特性,这里就不一一介绍了。