一、创建正则表达式
创建正则表达式和创建字符串类似,创建正则表达式提供了两种方法,一种是采用new运算符,另一个是采用字面量方式。
模式修饰符:i:忽略大小写、g:全局匹配、m:多行匹配
1、用new运算符
var box = new RegExp('box'); //第一个参数字符串
var box = new RegExp('box', 'ig'); //第二个参数可选模式修饰符
2、用字面量
var box = /box/; //直接用两个反斜杠
var box = /box/ig; //在第二个斜杠后面加上模式修饰符
二、测试正则表达式
RegExp对象包含两个方法:test()和exec(),功能基本相似,用于测试字符串匹配。
test()方法在字符串中查找是否存在指定的正则表达式并返回布尔值,如果存在则返回true,不存在则返回false。
exec()方法也用于在字符串中查找指定正则表达式,如果存在则返回包含该查找字符串的相关信息数组,不存在则返回null。
三、使用字符串的正则表达式方法:除了test()和exec()方法,String对象也提供了4个使用正则表达式的方法。
match(pattern):返回pattern匹配到的子串或null
replace(pattern, replacement):用replacement替换pattern匹配的内容
search(pattern):返回字符串中第一个pattern匹配开始位置,没有匹配返回-1,因为search方法查找到即返回,也就是说无需g全局
split(pattern):返回字符串按指定pattern拆分的数组
四、RegExp对象的静态属性
input:短名'$_':当前被匹配的字符串
lastMatch:短名'$&':最后一个匹配字符串
lastParen:短名'$+':最后一对圆括号内的匹配子串
leftContext:短名'$`':最后一次匹配前的子串
multiline:短名'$* 用于指定是否所有的表达式都用于多行的布尔值
rightContext:短名'$'':在上次匹配之后的子串
var pattern = /(g)oogle/;
var str = 'This is google!';
pattern.test(str);
alert(RegExp.input);//This is google!
alert(RegExp.leftContext);//This is
alert(RegExp.rightContext);//!
alert(RegExp.lastMatch);//google
alert(RegExp.lastParen);//g
alert(RegExp.multiline);//false
Opera不支持input、lastMatch、lastParen和multiline属性。IE不支持multiline属性。
所有的属性可以使用短名来操作:RegExp.input可以改写成RegExp['$_'],依次类推。但RegExp.input比较特殊,它还可以写成RegExp.$_。
五、RegExp对象的实例属性
global:Boolean值,表示g是否已设置
ignoreCase:Boolean值,表示i是否已设置
lastIndex:整数,代表下次匹配将从哪里字符位置开始
multiline:Boolean值,表示m是否已设置
Source:正则表达式的源字符串形式
var pattern = /google/ig;
alert(pattern.global); //true,是否全局了
alert(pattern.ignoreCase);//true,是否忽略大小写
alert(pattern.multiline);//false,是否支持换行
alert(pattern.lastIndex);//0,前面没有运行过test()或exec()所以返回0
alert(pattern.source); //google,正则表达式的源字符串