JS的replace方法
定义和用法
replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法
stringObject.replace(regexp/substr,replacement)
必需。规定子字符串或要替换的模式的RegExp对象。
请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为RegExp对象。
返回值
一个新的字符串,是用replacement替换了regexp的第一次匹配或所有匹配之后得到的。
说明
字符串stringObject的replace()方法执行的是查找并替换的操作。它将在stringObject中查找与regexp相匹配的子字符串,然后用replacement来替换这些子串。如果regexp具有全局标志g,那么replace()方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
replacement可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是replacement中的$字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
下文展示了几种javascript正则表示式的repalce方式,有些方式我们很少在别的地方看到,如第二种和第三方中方法。
//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url
varreg=newRegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
varurl="http://www.qidian.com/BookReader/1017141,20361055.aspx";
//方式一,最简单常用的方式
varrep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");
alert(rep);
//方式二,采用固定参数的回调函数
varrep2=url.replace(reg,function(m,p1,p2,p3){returnp1+"ShowBook.aspx?bookId="+p3+"&chapterId="+p3});
alert(rep2);
//方式三,采用非固定参数的回调函数
varrep3=url.replace(reg,function(){varargs=arguments;returnargs[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];});
alert(rep3);
//方法四
//方式四和方法三很类似,除了返回替换后的字符串外,还可以单独获取参数
[code]
varbookId;
varchapterId;
functioncapText()
{
varargs=arguments;
bookId=args[2];
chapterId=args[3];
returnargs[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];
}
varrep4=url.replace(reg,capText);
alert(rep4);
alert(bookId);
alert(chapterId);
//除了使用replace方法获取正则表示式的分组外,还可以使用test,exec方法获取分组,只是手法有所不同而已
varreg2=newRegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
varm=reg2.exec("http://www.qidian.com/BookReader/1017141,20361055.aspx");
vars="";
//获取所有的分组
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方法获取分组
varreg3=newRegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
reg3.test("http://www.qidian.com/BookReader/1017141,20361055.aspx");
//获取三个分组
alert(RegExp.$1);
alert(RegExp.$2);
alert(RegExp.$3);
varstr="www.baidu.com";
//str.format("好","q")
str.replace(newRegExp("(\\.)(bai)du","g"),function(){
for(vari=0;i<arguments.length;i++)
{
document.write(arguments[i]+"<br/>");
}
document.write("-------------------------------------------------<br/>");
});
两个例子(证明,replace传入正则参数和字符传参数结果不同):
alert("123".replace("1",function(){varun;returnun;})); //弹出undefined23
alert("123".replace(newRegExp("1"),function(){varun;returnun;})); //弹出23
replace()最简单的算是能力就是简单的字符替换。例如:
我想大家运行后可以看到结果,它只替换了首字母。但如果加上正则表达式结果就不一样了!replace()支持正则表达式,它可以按照正则表达式的规则匹配字符或字符串,然后给予替换!
但是结果还是没有更改,如果您熟悉正则,那这就难不住您。稍加修改就OK了。
<scriptlanguage="javascript">
varstrM="javascriptisagoodscriptlanguage";
//在此将字母a全部替换成字母A
alert(strM.replace(/a/g,"A"));
</script>
还可以这样,看看效果!
<scriptlanguage="javascript">
varstrM="javascriptisagoodscriptlanguage";
alert(strM.replace(/(javascript)\s*(is)/g,"$1$2fun.it$2"));
</script>
我这儿举的例子都是很简单的应用,replace()在此点上与您使用正则表达式的能力成正比。您正则表达式越强,呵呵,那您就会越疯狂的爱上它。
当然,我这儿推荐replace()的原因并不因为它能与正则表达式合作,而在于它还能与函数进行合作,发挥出强大的功能。
先看看简单例子:将所有单词首字母换成大写。
<scriptlanguage="javascript">
varstrM="javascriptisagoodscriptlanguage";
functionchange(word)
{
returnword.indexOf(0).toUpperCase()+word.substring(1);
}
alert(strM.replace(/\b\w+\b/g,change));
</script>
由上可知,当正则表达式有"g"标志时,代表将处理整个字符串,即函数change的变换将应用于所有匹配的对象。而该函数有三个或更多参数,具体个数视正则表达式而定。
有了函数与正则表达式的配合,replace()处理字符串的功能空前强大起来了!
最后还举个例子,将字符串所有单词倒序,用replace()处理是如此简单。
<scriptlanguage="javascript">
varstrM="javascriptisagoodscriptlanguage";
functionchange(word)
{
varresult=word.match(/(\w)/g);
if(result)
{
varstr="";
for(vari=result.length-1;i>=0;i--)
{
str+=result;
} returnstr;
}
else
{
return"null";
}
}
alert(strM.replace(/\b(\w)+\b/g,change));
</script>
相关文章
- JS数组遍历的几种方法
- js与jQuery的区别以及jQuery选择器和方法的使用
- js对象转数组 entries方法
- js中四舍五入的方法_JS取整
- 【源码】PDF.js批注注释插件库(纯JS). 创建和保存PDF批注(PDF 高亮/签名/插图/截屏/文本框/画笔/多边形)-pdf.js
- js判断checkbox复选框是否被选中的方法
- js方法将系统当前时间转换为字符串详解编程语言
- JS判断是否是数组:使用isArray()方法
- JS filter()方法:根据指定条件过滤数组元素
- 详细解析JS木马的原理及防范方法
- 使用JS在网页中连接Oracle数据库(js网页链接oracle)
- js连接oracle实现数据库访问的简单方法(js怎样连接oracle)
- JS正则表达式详解[收藏]
- 非常酷的js图形渐隐导航菜单栏
- js常用排序实现代码
- javascript开发技术大全-第3章js数据类型
- 解决3.01版的jquery.form.js中文乱码问题的解决方法
- js修改input的type属性及浏览器兼容问题探讨与解决
- Js回车换行处理的办法及replace方法应用
- js获取dom的高度和宽度(可见区域及部分等等)
- JS精确统计网站访问量的实例代码
- js固定DIV高度,超出部分自动添加滚动条的简单方法
- 使用js的replace()方法查找字符示例代码
- JS屏蔽键盘不可用与鼠标右键不可用的方法
- js设置组合快捷键/tabindex功能的方法
- JS中的异常处理方法分享
- js数组去重的常用方法总结
- js实现连个数字相加而不是拼接的方法
- node.js中的fs.fsync方法使用说明
- js实现禁止中文输入的方法