JavaScript中支持正则表达式的方法汇总

JavaScript中支持正则表达式的方法

js中正则表达式对象的创建和声明有两种:
1、用两斜杠将正则表达式夹在中间。
例:var reg = /\w+/;
2、使用new来创建。
例:var reg = new RegExp(“\w+”);
注:使用“//”来创建正则对象,是推荐的风格。但有的时候在js中使用“//”来创建正则对象时会报错,这个时候就可以作用new来进行创建。

 

JavaScript中支持正则表达式的方法

① boolean reg.test(str)
test()用于检查指定的字符串是否存在,如果存在的话就返回true,否则返回false
例:
       var reg = /\d+/;
       var str = “32343”;
       alert(reg.test(str));
输出结果:true

② string[] reg.exec(str)
exec()函数返回的是源字符串中与正则表达式相匹配的整个子串和正则中的各个分组相匹配的子串组合在一起的一个数组,即这个数组(group)存放的是匹配组中各个组得到的匹配串,各个元素之间用逗号分隔,比如下面的例子中strArr中存放的是{"John Smith","John","Smith"}。第0个元素是整个串,因为第0个组代表的是整个正则表达式。
例:
var reg = /(\w+)\s(\w+)/;
var str  = "John Smith";
var strArr = reg.exec(str);
for(var i=0; i< strArr.length; i++){
       document.write("第"+i+"组:"+ strArr[i]+"<br/>");
}
输出结果:
第0组:John Smith
第1组:John
第2组:Smith

③ string[] str.match(reg)
match()返回匹配得到的数组。在正则表达式后面加个g(golable全局匹配),那么match()函数就能得到将正则表达式每次匹配的结果都放在一个数组里面,最后将这个数组返回。如果在正则表达式最后没有g的话,那么match()这个函数就只能返回第一次匹配得到的结果,然后将其存放在数组里面返回。
例:
var reg = /(\d)(\w+)/g;//如果没有最后的g,则只会得到一次匹配,即第0组
var str  = "1a,213,skk,2_j,ca2t,3dfs,3,Cat,dsfsdfs";
var strArr = str.match(reg);
for(var i=0; i< strArr.length; i++){
       document.write("第"+i+"组:"+ strArr[i]+"<br/>");
}
输出结果:
第0组:1a
第1组:213
第2组:2_j
第3组:2t
第4组:3dfs
注:如果正则为:var reg = /(\d)(\w+)/;的话,则输出的结果为:第0组:1a

④ int reg.search(str)
search()返回匹配串的位置,从0开始计数的话,就是返回匹配串第一个字符的标号,类似于indexof()。
例:
var str = "3,Cat,cat,asfsdfs";
var reg = /a\w{3}/;
document.write(str.search(reg));
输出结果:10

⑤ string str.replace(reg,str2);
replace()函数的第一个参数可以是普通字符串,也可以是正则表达式。它将匹配到的子串替换为str2,然后将替换后的结果返回。
如果正则表达式的最后含有g(golable全局匹配)的话,那么它将遍历整个字符串str,将能够匹配的子串全部替换。
例:
var str = "123123,213,12312,312,3,Cat,cat,dsfsdfs";
var reg = /cat/gi;//如果没有g的话,就只会替换第一次匹配的子串
var newstr = str.replace(reg,"#####");
document.write(newstr);
输出结果:123123,213,12312,312,3,#####,#####,dsfsdfs
如果正则表达式为var reg = /cat/i;的话,输出结果为:123123,213,12312,312,3,#####,cat,dsfsdfs

⑥ stting[] str.split(reg)
split()函数的参数可以为普通字符串,也可以为正则表达式。它是将源字符串str以参数reg进行分割,然后将分割后得到的每个子串存放在数组里面返回。
例:
var str = "121#cat###345##mmm";
var reg = /#/;
str = str.replace(/#+/g,"#");
var strArr = str.split(reg);
for(var i=0; i<strArr.length; i++){
       document.write("第"+i+"个:"+strArr[i]+"<br/>");
}
输出结果:
第0个:121
第1个:cat
第2个:345
第3个:mmm

 

$1...$9 引用(匹配)得到的分组子串,如果它(们)存在的话。注意:是没有$0的,$1是引用第一个分组匹配的子串
例:
var reg = /(\w+)\s(\w+)/;
var str  = "John Smith";
var str = str.replace(reg, "$2,$1");
document.write(str);
输出结果:Smith,John

  

 

如果想系统的学习正则表达式,请移步我的 正则表达式从入门到高手 的视频课程:
http://edu.51cto.com/sd/59587

 

posted on 2012-09-23 15:39  快鸟  阅读(744)  评论(0编辑  收藏  举报