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 常用操作代码
Mar 14 Javascript
js中格式化日期时间型数据函数代码
Nov 08 Javascript
javascript下拉框选项单击事件的例子分享
Mar 04 Javascript
JavaScript常用字符串与数组扩展函数小结
Apr 24 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
May 17 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
Dec 21 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
Apr 13 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
Sep 15 Javascript
微信小程序如何自定义table组件
Jun 29 Javascript
Vue scoped及deep使用方法解析
Aug 01 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
Oct 27 Javascript
ES6的循环与可迭代对象示例详解
Jan 31 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
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
2016/10/29 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
php格式文件打开的四种方法
2018/02/24 PHP
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
Python基于Tkinter实现的记事本实例
2015/06/17 Python
Python中一行和多行import模块问题
2018/04/01 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
银行毕业实习自我鉴定
2013/09/19 职场文书
给分销商的致歉信
2014/01/14 职场文书
交通志愿者活动总结
2014/06/27 职场文书
大学生实习介绍信
2015/05/05 职场文书
办公用品管理制度
2015/08/04 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
教育教学工作反思
2016/02/24 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers