javascript高级程序设计第五章总结5.2

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=\.at\g;       //设置全局
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");
}

 

 

 

posted @ 2013-10-06 21:15  @敏敏  阅读(176)  评论(0编辑  收藏  举报