javascript正则表达式
一、创建正在表达式
其创建方式有两种,一种是new关键字,另一种是字面量方式
1.new关键字
var regexp=new RegExp('box');
alert(regexp);//返回结果为/box/,两个反斜杠就是正则表达式的字面量表示法
var regexp=new RegExp('box','ig'); //第二个参数可选,模式修饰符
alert(regexp);
模式修饰符的表格
2.字面量方式(比较常用)
var regexp=/box/; //字面量方式
alert(regexp);
var regexp=/box/ig; //字面量方式 ,第二个参数可选,模式修饰符
alert(regexp);
二、测试正则表达式
正则表达式对象中的有两个方法。一个是test(),另外一个是exec().
1.test(),在字符串中测试模式匹配,返回true或false
a.采用的是new关键字的test()
var regexp=new RegExp('box');
var str="Box";
alert(regexp.test(str)); //返回false,大小写不一致
var regexp=new RegExp('box',"i");
var str="Box";
alert(regexp.test(str)); //返回true,有了i模式修饰符之后就会忽略大小写了
b.采用字面量的test()
var regexp=/box/;
var str="Box";
alert(regexp.test(str)); //返回false,大小写不一致
var regexp=/box/i;
var str="Box";
alert(regexp.test(str));//返回true,有了i模式修饰符之后就不区分大小写了
c.一句话形式
alert(/box/i.test("Box"));
说明:
2.exec(),在字符串中执行匹配搜索,返回结果数组
var regexp=/box/i;
var str="Box";
alert(regexp.exec(str));
alert(typeof regexp.exec(str));// 返回的数组 ,有就返回数组的值,没有就返回null
三、使用字符串的正则表达式方法(以下方法是存在于字符串中的,是通过字符串对象去使用.符号调用)
1.使用match方法获取匹配数组
var str="This is a box!That is a box";
var regexp=/Box/i; //没有开启全局匹配
alert(str.match(regexp)); //所以只返回了第一个box
var str="This is a box!That is a box";
var regexp=/Box/ig; //g开启全局匹配
alert(str.match(regexp)); //所以返回两个box,以数组格式打印出来
2.使用search()来查找匹配数据
var str="This is a box!That is a box";
var regexp=/Box/i;
//返回第一个匹配的位置,注意:查找第一个位置匹配就立刻返回,所以g模式修饰符的全局匹配就没有用了
alert(str.search(regexp));//如果找不到就返回-1
3.split()拆分成字符串数组
var str="This is a box!That is a box";
var regexp=/!/ig;
alert(str.split(regexp));//以!为分割点,返回数组,结果为This is a box,That is a box
四、RegExp对象的静态属性
var regexp=/google/i;
var str="This is a Google!";
regexp.test(str);
alert(RegExp.input);
alert(RegExp["$`"]); //或者RegExp.leftContext;这两个效果相同
multiline是否支持多行
五、RegExp对象的实例属性
var regexp=/google/i;
alert(regexp.global); //正则对象是否设置了g(全局匹配)
lastIndex可以自己赋值