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 相关文章推荐
xmlHTTP实例
Oct 24 Javascript
不错的JS中变量相关的细节分析
Aug 13 Javascript
改变状态栏文字的js代码
Jun 13 Javascript
js中的getAttribute方法使用示例
Aug 01 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
动态加载js、css的简单实现代码
May 26 Javascript
微信小程序 支付简单实例及注意事项
Jan 06 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
Jun 12 Javascript
ES6的Fetch异步请求的实现方法
Dec 07 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
Jun 25 Javascript
谈谈JavaScript中的垃圾回收机制
Sep 17 Javascript
JS ES6异步解决方案
Apr 29 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分页显示制作详细讲解
2006/12/05 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python正则表达式的使用范例详解
2014/08/08 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Python Requests安装与简单运用
2016/04/07 Python
浅述python2与python3的简单区别
2018/09/19 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
计算机专业个人求职信范例
2013/09/23 职场文书
学习新党章思想汇报
2014/01/09 职场文书
个人借款担保书
2014/04/02 职场文书
通信工程求职信
2014/07/16 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
使用Java去实现超市会员管理系统
2022/03/18 Java/Android
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
Python何绘制带有背景色块的折线图
2022/04/23 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers