网站地图    收藏   

主页 > 前端 > javascript >

javascript的replace方法的用法

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] replace方法是js中一个字符对像上常用的字符替换方法,他可以直接替换指定字符串也可以在replace方法中写正则表达多规则来替换,下面我给大家介绍replace方法的用法....

replace是String对象上的一个方法,可以实现把字符串中某些指定的子字符串替换成其他字符串。用法为 “字符串.replace(parm1,parm2)”。其中parm1的老字符串,可以使普通字符串,也可以是一个正则表达式;parm2退换的结果,可以是一个字符串,更重要的是也可以是一个javascript的方法,作为回调函数。下面用几个小例子来分别说明一下。

 代码如下 复制代码

alert('abcabd'.replace('ab','12'));

这里alert的结果就是12cabd,注意到它只替换到第一次出现的,后面不做替换。如果把子串全部替换,只能用正则表达式的方法来操作。

 代码如下 复制代码

alert('abcabdAbe'.replace(/ab/g,'12'));

这样得到的结果为12c12dAbe,g 表示进行全局替换,同时也可以用 i 来忽略大小写,注意正则表达式不能用引号引起来。

 代码如下 复制代码

var i = 0;
alert('abAabBabC'.replace(/ab/g, function(m) {
i++;
return m + '-' + i + '-';
}));

这里的结果是ab-1-Aab-2-Bab-3-C,当匹配到子字符串时,调用回调方法,并把匹配到的值作为参数传入。另外一个例子,把字符串中小于30的数替换成星号

 代码如下 复制代码

alert('10 33 21 18 52'.replace(/d+/g, function(match) {
return parseInt(match) < 30 ? '*' : match;
}));


下文展示了几种javascript正则表示式的repalce方式,有些方式我们很少在别的地方看到,如第二种和第三方中方法。

 代码如下 复制代码

//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url
var reg=new RegExp("()(\d+),(\d+).aspx","gmi");
var url="1017141,20361055.aspx";

//方式一,最简单常用的方式
var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");
alert(rep);

//方式二 ,采用固定参数的回调函数
var rep2=url.replace(reg,function(m,p1,p2,p3){return p1+"ShowBook.aspx?bookId="+p3+"&chapterId="+p3});
alert(rep2);

//方式三,采用非固定参数的回调函数
var rep3=url.replace(reg,function(){var args=arguments; return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];});
alert(rep3);


//方法四
//方式四和方法三很类似, 除了返回替换后的字符串外,还可以单独获取参数
var bookId;
var chapterId;
function capText()
{
    var args=arguments;
    bookId=args[2];
    chapterId=args[3];
    return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];
}

var rep4=url.replace(reg,capText);
alert(rep4);
alert(bookId);
alert(chapterId);


//除了使用replace方法获取正则表示式的分组外,还可以使用test ,exec方法获取分组,只是手法有所不同而已
var reg2=new RegExp("()(\d+),(\d+).aspx","gmi");
var m=reg2.exec("1017141,20361055.aspx");
var s="";
//获取所有的分组
for (i = 0; i < m.length; i++) {
      s = s + m[i] + "n";     
      }
alert(s);

bookId=m[2];
chapterId=m[3];
alert(bookId);
alert(chapterId);


//使用test方法获取分组
var reg3=new RegExp("()(\d+),(\d+).aspx","gmi");
reg3.test("1017141,20361055.aspx");
//获取三个分组
alert(RegExp.$1);
alert(RegExp.$2);
alert(RegExp.$3);

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论