JS的replace方法详细介绍


Posted in Javascript onNovember 09, 2012

replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
下文展示了几种javascript正则表示式的repalce方式,有些方式我们很少在别的地方看到,如第二种和第三方中方法。
//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url

var reg=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var url="http://www.qidian.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("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var m=reg2.exec("http://www.qidian.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("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
reg3.test("http://www.qidian.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 01 Javascript
JQuery判断子iframe何时加载完成解决方案
Aug 20 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 Javascript
Javascript仿PHP $_GET获取URL中的参数
May 12 Javascript
javascript中一些util方法汇总
Jun 10 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
Feb 27 Javascript
js实现随机数字字母验证码
Jun 19 Javascript
详解Vue.js项目API、Router配置拆分实践
Mar 16 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
Sep 17 Javascript
vue+element树组件 实现树懒加载的过程详解
Oct 21 Javascript
vue实现简单图片上传
Jun 30 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 #Javascript
javascript模拟select,jselect的方法实现
Nov 08 #Javascript
js实现图片放大缩小功能后进行复杂排序的方法
Nov 08 #Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
Nov 08 #Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 #Javascript
Javascript继承(上)——对象构建介绍
Nov 08 #Javascript
异步javascript的原理和实现技巧介绍
Nov 08 #Javascript
You might like
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
移动节点的jquery代码
2014/01/13 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
python爬虫自动创建文件夹的功能
2018/08/01 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
Pyqt5实现英文学习词典
2019/06/24 Python
python GUI模拟实现计算器
2020/06/22 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
保护环境的建议书
2014/03/12 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书