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 相关文章推荐
一个选择最快的服务器转向代码
Apr 27 Javascript
jQuery maxlength文本字数限制插件
Apr 16 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
Extjs407 getValue()和getRawValue()区别介绍
May 21 Javascript
JS实现单行文字不间断向上滚动的方法
Jan 29 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
浅谈下拉菜单中的Option对象
May 10 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
Oct 20 Javascript
jquery validate.js表单验证入门实例(附源码)
Nov 10 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
Aug 01 Javascript
Nuxt.js SSR与权限验证的实现
Nov 21 Javascript
JS document内容及样式操作完整示例
Jan 14 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
JS改变页面颜色源码分享
2018/02/24 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
python如何提升爬虫效率
2020/09/27 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
宿舍保安职务说明书
2014/02/25 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
解除租房协议书
2014/12/03 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript