1、RegExp类型,g表示全局,i表示不区分大小写,m表示继续查找下一行,用字面量方法来定义正则表达式
//匹配字符串中所有的"at"实例 var pattern1=/at/g; //匹配第一个"bat" 或"cat"不区分大小写 var pattern2=/[bc]at/i; //匹配以at结尾的三个字符的组合,不区分大小写 var pattern3=/.at/i; //匹配第一个“[bc]at”不区分大小写 var pattern4=/[bc]at/i; //匹配第一个".at",不区分大小写 var pattern5=/.at/i;
2、用RegExp构造函数来创建正则表达式,它接收2个函数,一个是要匹配的字符串模式,一个是可选的标志字符串
//字面量方法定义 var pattern1=/[bc]at/i; //RegExp构造函数创建正则表达式 var patter2=new RegExp("[bc]at","i"); //两者之间是等价的,用字面量定义的任何表达式,都可以用构造函数来定义
3、正则表达式字面量始终会共享同一个RegExp实例,而构造函数创建的每一个新RegExp实例都是一个新实例。
var re=null,i; for(i=0;i<10;i++) { re=/cat/g; re.test("catastrophe"); } for(i=0;i<10;i++) { re=new RegExp("cat","g"); re.test("catastrophe"); } //第一个循环因为第二次循环是从第三个字符开始的,所以就找不到了。第二个循环会一直返回true
4、RegExp的exec()方法,包含2个额外的属性index(表示匹配项字符串的位置)和input(表示应用正则表达式的字符串),设置全局标志的情况下,每次调用exec()会在字符串中继续查找新匹配项,如果不设置的话始终返回第一个匹配项的信息
var text="cat,bat,sat,fat"; var pattern1=.at; //不设置全局 var matches=pattern1.exec(text); alert(matches.index); //0 alert(matches[0]) ; //cat alert(pattern1.lastIndex); //0 matches=pattern1.exec(text); alert(matches.index); //0 alert(matches[0]) ; //cat alert(pattern1.lastIndex); //0 var text="cat,bat,sat,fat"; var pattern2=.atg; //设置全局 var matches=pattern2.exec(text); alert(matches.index); //0 alert(matches[0]) ; //cat alert(pattern2.lastIndex); //0 matches=pattern2.exec(text); alert(matches.index); //5 alert(matches[0]) ; //bat alert(pattern2.lastIndex); //8
5、RegExp的test()方法,接受一个字符串参数。在模式与该参数匹配的情况下返回true,否则返回false.
var text="000-00-0000"; var pattern=/d{3}-d{2}-d{4}/; if(pattern.test(text)) { alert("The pattern was matched"); }