JS的replace方法介绍


Posted in Javascript onOctober 20, 2012

该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
下文展示了几种javascript正则表示式的repalce方式,有些方式我们很少在别的地方看到,如第二种和第三方中方法。

//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url 
var reg=new RegExp("(https://3water.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var url="https://3water.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("(https://3water.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var m=reg2.exec("https://3water.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("(https://3water.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
reg3.test("https://3water.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实现iframe框架取值的方法(兼容IE,firefox,chrome等)
Nov 26 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
Feb 09 Javascript
vue-resourse将json数据输出实例
Mar 08 Javascript
基于Vue实现timepicker
Apr 25 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
使用vuex缓存数据并优化自己的vuex-cache
May 30 Javascript
原生JS封装_new函数实现new关键字的功能
Aug 12 Javascript
Node.js之readline模块的使用详解
Mar 25 Javascript
解决layui动态加载复选框无法选中的问题
Sep 20 Javascript
JavaScript进制转换实现方法解析
Jan 18 Javascript
微信小程序自定义弹出层效果
May 26 Javascript
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
Lazy Load 延迟加载图片的jQuery插件中文使用文档
Oct 18 #Javascript
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 #Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
Oct 15 #Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
Oct 15 #Javascript
JS自动缩小超出大小的图片
Oct 12 #Javascript
文本框input聚焦失焦样式实现代码
Oct 12 #Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 #Javascript
You might like
目录,文件操作详谈―PHP
2006/11/25 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
Python中处理unchecked未捕获异常实例
2015/01/17 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
Keras load_model 导入错误的解决方式
2020/06/09 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
Django配置跨域并开发测试接口
2020/11/04 Python
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
三分钟演讲稿事例
2014/03/03 职场文书
给校长的建议书600字
2014/05/15 职场文书
群教班子对照检查材料
2014/08/26 职场文书
节约用电通知
2015/04/25 职场文书
关于童年的读书笔记
2015/06/26 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS
Python实现生活常识解答机器人
2021/06/28 Python
浅谈MySQL中的六种日志
2022/03/23 MySQL
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript