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 相关文章推荐
Ajax+Json 级联菜单实现代码
Oct 27 Javascript
JavaScript 学习笔记(五)
Dec 31 Javascript
javaScript中的原型解析【推荐】
May 05 Javascript
给easyui的datebox控件添加清空按钮的实现方法
Nov 09 Javascript
javascript中活灵活现的Array对象详解
Nov 30 Javascript
JavaScript函数节流的两种写法
Apr 07 Javascript
Bootstrap输入框组件使用详解
Jun 09 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
Feb 12 jQuery
详解Angular路由之路由守卫
May 10 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
May 27 Javascript
微信小程序背景音乐开发详解
Dec 12 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 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无限分类源码分享(思路不错)
2011/10/13 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
vue的token刷新处理的方法
2018/07/17 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
Python程序语言快速上手教程
2012/07/18 Python
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python实现爬取逐浪小说的方法
2015/07/07 Python
TensorFlow实现模型评估
2018/09/07 Python
通过python3实现投票功能代码实例
2019/09/26 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
关于Python解包知识点总结
2020/05/05 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
面向对象编程的优势是什么
2015/12/17 面试题
舞蹈教育学专业推荐信
2013/11/27 职场文书
应聘面试自我评价
2014/01/24 职场文书
面试后的英文感谢信
2014/02/01 职场文书
国培远程培训感言
2014/03/08 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
2016年元旦寄语
2015/08/17 职场文书
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android