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 相关文章推荐
深入理解JavaScript系列(4) 立即调用的函数表达式
Jan 15 Javascript
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
JavaScript列表框listbox全选和反选的实现方法
Mar 18 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
js中的关联数组与普通数组详解
Jul 27 Javascript
Angular路由简单学习
Dec 26 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
Vue实现自定义下拉菜单功能
Jul 16 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 Javascript
30分钟快速实现小程序语音识别功能
Nov 27 Javascript
JavaScript算法学习之冒泡排序和选择排序
Nov 02 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 编写的 25个游戏脚本
2009/05/11 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
PHP生成器简单实例
2015/05/13 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
js函数内变量的作用域分析
2015/01/12 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
Python多线程编程(五):死锁的形成
2015/04/05 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
python 图片去噪的方法示例
2019/07/09 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
社区志愿者心得体会
2014/01/03 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
老人节标语大全
2014/10/08 职场文书
新员工试用期自我评价
2015/03/10 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
字节飞书面试promise.all实现示例
2022/06/16 Javascript
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL