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 相关文章推荐
lyhucSelect基于Jquery的Select数据联动插件
Mar 29 Javascript
判断浏览器的内核及版本号方法汇总
Jan 05 Javascript
全面解析Bootstrap表单使用方法(表单控件)
Nov 24 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
微信小程序学习(4)-系统配置app.json详解
Jan 12 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
May 17 Javascript
Angular简单验证功能示例
Dec 22 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
May 23 jQuery
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
Nest.js 授权验证的方法示例
Feb 22 Javascript
8个JS的reduce使用实例和reduce操作方式
Oct 05 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
解析ajax事件的调用顺序
2013/06/17 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
使用python实现ANN
2017/12/20 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
Python continue继续循环用法总结
2018/06/10 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
美国Max仓库:Max Warehouse
2020/05/31 全球购物
大学生自助营养快餐店创业计划书
2014/01/13 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
思想作风建设心得体会
2014/10/22 职场文书
业务内勤岗位职责
2015/04/13 职场文书
个人廉政承诺书
2015/04/28 职场文书
工作时间证明
2015/06/15 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
Golang流模式之grpc的四种数据流
2022/04/13 Golang