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 相关文章推荐
JS backgroundImage控制
May 19 Javascript
Js 获取Gridview选中行的内容操作步骤
Feb 05 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 Javascript
jquery获得当前html页面源码的方法
Jul 14 Javascript
bootstrap弹出层的多种触发方式
May 10 Javascript
JS时间控制实现动态效果的实例讲解
Jul 31 Javascript
Vue结合SignalR实现前后端实时消息同步
Sep 19 Javascript
three.js中3D视野的缩放实现代码
Nov 16 Javascript
使用Javascript简单计算器
Nov 17 Javascript
elementUI多选框反选的实现代码
Apr 03 Javascript
JS浏览器BOM常见操作实例详解
Apr 27 Javascript
一文搞懂redux在react中的初步用法
Jun 09 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 函数语法介绍一
2009/06/14 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
Python进阶-函数默认参数(详解)
2017/05/18 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
美国著名的团购网站:Woot
2016/08/02 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
医院安全生产月活动总结
2014/07/05 职场文书
八年级英语教学计划
2015/01/23 职场文书
元旦晚会开场白
2015/05/29 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python
python ansible自动化运维工具执行流程
2021/06/24 Python
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript