JS的replace方法详细介绍


Posted in Javascript onNovember 09, 2012

replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
下文展示了几种javascript正则表示式的repalce方式,有些方式我们很少在别的地方看到,如第二种和第三方中方法。
//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url

var reg=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var url="http://www.qidian.com/BookReader/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("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var m=reg2.exec("http://www.qidian.com/BookReader/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("(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); var str="www.baidu.com"; 
//str.format("好","q") 
str.replace(new RegExp("(\\.)(bai)du","g"),function(){ 
for(var i=0;i<arguments.length;i++) 
{ 
document.write(arguments[i]+"<br/>"); 
} 
document.write("-------------------------------------------------<br/>"); 
}); 
两个例子(证明,replace传入正则参数和字符传参数结果不同): 
alert("123".replace("1",function(){var un;return un;})); //弹出undefined23 
alert("123".replace(new RegExp("1"),function(){var un;return un;})); //弹出23
Javascript 相关文章推荐
JavaScript QueryString解析类代码
Jan 17 Javascript
基于Jquery的动态添加控件并取值的实现代码
Sep 24 Javascript
利用cookie记住背景颜色示例代码
Nov 04 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
JS选取DOM元素的简单方法
Jul 08 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
Feb 09 Javascript
极简主义法编写JavaScript类
Nov 02 Javascript
原生JS封装_new函数实现new关键字的功能
Aug 12 Javascript
微信小程序中显示倒计时代码实例
May 09 Javascript
js实现自定义滚动条的示例
Oct 27 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 #Javascript
javascript模拟select,jselect的方法实现
Nov 08 #Javascript
js实现图片放大缩小功能后进行复杂排序的方法
Nov 08 #Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
Nov 08 #Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 #Javascript
Javascript继承(上)——对象构建介绍
Nov 08 #Javascript
异步javascript的原理和实现技巧介绍
Nov 08 #Javascript
You might like
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
详解vue-cli3使用
2018/08/14 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
Python中的元类编程入门指引
2015/04/15 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
初中女生自我鉴定
2013/12/19 职场文书
校园广播稿500字
2014/02/04 职场文书
环保建议书100字
2014/05/14 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
工作能力自我评价2015
2015/03/05 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
小学运动会加油稿
2015/07/22 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记