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 相关文章推荐
利用jQuery的$.event.fix函数统一浏览器event事件处理
Dec 21 Javascript
无限树Jquery插件zTree的常用功能特性总结
Sep 11 Javascript
Node.js中的流(Stream)介绍
Mar 30 Javascript
Input文本框随着输入内容多少自动延伸的实现
Feb 15 Javascript
nginx部署访问vue-cli搭建的项目的方法
Feb 12 Javascript
收集前端面试题之url、href、src
Mar 22 Javascript
javascript之分片上传,断点续传的实际项目实现详解
Sep 05 Javascript
layui导出所有数据的例子
Sep 10 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
Dec 25 jQuery
Vue使用Three.js加载glTF模型的方法详解
Jun 14 Javascript
基于VSCode调试网页JavaScript代码过程详解
Jul 20 Javascript
JavaScript实现拖拽和缩放效果
Aug 24 Javascript
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
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
2015年教师节感言
2015/08/03 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android