正则表达式符号
RegExp类型
ECMAScript通过RegExp类型来支持正则表达式。
语法
var expression = / pattern / flags;
pattern (模式)部分 可以是任何简单或者复杂的表达式
1.pattern可以包含 字符、限定符、分组、向前查找 以及反向引用
2.每个表达式都可带有一个或多个标志(flags)
正则表达式匹配模式支持3个标志
____1. g(global):全局模式,应用于所有字符串,非发现第一个匹配项停止;
____2. i(case-insensitive):不区分大小写模式,匹配项时忽略字符串的大小写;
____3. m(multiline):多行模式,到达一行末尾,还会继续查找下一行中是否存在与模式匹配的项;
//匹配字符串所有"at"的实例
var pattern1=/at/g;
//匹配第一个"bat"或"cat",不区分大小写
var pattern2=/[bc]at/i;
//匹配所有以"at结尾的三个字符组合",不区分大小写
var pattern3=/.at/gi;
模式中使用所有的元字符必须转义
元字符包括:([{\^$|)?*+.]}
如果想在匹配字符串中包含这些字符,需要给 元字符进行转义
//匹配第一个bat或cat 不区分大小写
var pattern1 =/[bc]at/i;
var pattern2 =/\[bc]at/i;
var at="/\at";
console.log(pattern1.test(at));//true
var pattern3 = /\/.at/gi;
console.log(pattern3.test("/\bat"));//true
var pattern4 = /\/\.at/gi;
console.log(pattern4.test("/\/\.at"));//true
另一种创建正则表达式的方式
RegExp构造函数
参数:
要匹配的字符串模式、标志字符串(可选)
var pattern2 = new RegExp("[bc]at","i");
RegExp实例属性
global:布尔值,表示是否设置了g标志。
ignoreCase:布尔值,表示是否设置了i标志。
lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
multiline:布尔值,表示是否设置了m标志。
source:正则表达式的字符串表示,按照字面量的形式而非传入构造函数中的字符串模式返回。
var pattern1 = /\[bc\]at/i;
console.log(pattern1.global);//false
console.log(pattern1.ignoreCase);//true
console.log(pattern1.multiline);//false
console.log(pattern1.lastIndex);//0
console.log(pattern1.source);//\[bc\]at
RegExp对象之exec()函数
参数:传入的字符串
返回:匹配项数组 Array
没有匹配项的时候返回null
返回的数组包含额外的属性:index 、input 位置和文本
var text = "mom and dad and bady";
var pattern = /mom( and dad( and bady)?)?/gi;
var matches = pattern.exec(text);
console.log(matches.index); //0
console.log(matches.input); //"mom and dad and bady"
console.log(matches[0]); //"mom and dad and bady"
console.log(matches[1]); //"and dad and bady"
console.log(matches[2]); //"and bady"
IE的lastIndex属性偏差非全局也会变化
其他的如果非要用lastIndex 设置全局
RegExp对象之test()函数
接收参数:字符串
返回参数:匹配true 、不匹配false
var pattern = /mom( and dad( and bady)?)?/gi;
console.log(pattern.test("mom and dad and bady")); //true