javascript replace()第二个参数为函数时的参数用法


Posted in Javascript onDecember 26, 2016

javascript的replace()第二个参数为函数时的参数:

replace()函数具有替换功能,它可以具有两个参数,第一个参数可以是要被替换的字符串或者匹配要被替换字符串的正则表达式,第二个参数可以是替换文本或者一个函数,下面看一下关于replace()函数的几个代码实例。
代码实例:
实例一:

<script>
var str="I love 3water and you?";
console.log(str.replace("jb","java"));
</script>

上面的代码只能够替换字符串中的第一个指定子字符串。
实例二:

<script>
var str="I love 3water and you?";
var reg=/jb/g;
console.log(str.replace(reg,"java"));
</script>

上面的代码可以将字符串中的所有指定子字符串替换掉。
实例三:

<script>
var str="I love 3water and you?";
console.log(str.replace("jb",function(){
 return "java"}
));
</script>

上面的代码中,第二个参数是一个函数,可以用此函数的返回值替换字符串中指定的子字符串。当第二个参数为函数的时候,其实这个函数可以传递参数的,下面就通过代码实例介绍一下关于函数的参数问题。
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>三水点靠木</title>
<script type="text/javascript">
var url = "https://3water.com/o.php?mod=viewthread&tid=14743&extra=page%3D1";
//第一参数为字符串
console.group("字符串");
var oneResult = url.replace("3water.com",function(){
 console.log("replace输入参数:%o",arguments);
 var val = /3water.com/.exec(url);
 
 console.log("exec输出参数:%o",val);
              
 console.assert(arguments[0] === val[0]);
 console.assert(arguments[1] === val["index"]);
 console.assert(arguments[2] === val["input"]);
 return "3water";
});
console.log("replace返回字符串:"+oneResult);
console.groupEnd("字符串");
    
//第一参数为正则表达式
console.group("正则表达式");
var regexp_global = /[?&](\w+)=([^&]*)/g;
var count = 0;
var twoResult = url.replace(regexp_global,function(){
 console.log("第"+(count++)+"次运行");
 console.log("replace输入参数:%o",arguments);
 var val = regexp_global.exec(url);
 console.log("exec输出参数:%o",val);
              
 console.assert(arguments[0] === val[0]);
 console.assert(arguments[1] === val[1]);
 console.assert(arguments[2] === val[2]);
 console.assert(arguments[3] === val["index"]);
 console.assert(arguments[4] === val["input"]);
 return count;
});
console.log("replace返回字符串:"+twoResult);
console.groupEnd("正则表达式");
</script>
</head>
<body>
 
</body>
</html>

在上面的代码中,分别演示了replace()函数第一参数是普通字符串和正则表达式的时候,第二个函数参数传递参数的情况,下面分别做一下简单的说明:
第一个参数是普通字符串:

当第一个参数是普通字符串的时候,那么只会替换原字符串中的第一个子字符串,也就是说只会执行一次替换操作,为函数传递的参数和以普通字符串参数作为正则表达式执行exec()函数返回的数组的元素是相同的。
第一个参数是正则表达式:

由于篇幅原因,这里只是截取了一部分运行结果内容,replace()函数的第一个参数是正则表达式,并且执行的是全局匹配,那么第二个函数参数会多次被调用,每次被调用传递的参数,也是和regexp_global.exec(url)返回的数组的元素内容是相同的。

Javascript 相关文章推荐
javascript之锁定表格栏位
Jun 29 Javascript
完整显示当前日期和时间的JS代码
Sep 17 Javascript
GreyBox技术总结(转)
Nov 23 Javascript
javascript中不提供sleep功能如何实现这个功能
May 27 Javascript
深入理解javascript中的立即执行函数(function(){…})()
Jun 12 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 Javascript
jQuery遍历json的方法(推荐)
Jun 12 Javascript
JS实现留言板功能
Jun 17 Javascript
JavaScript hasOwnProperty() 函数实例详解
Aug 04 Javascript
node.js的Express服务器基本使用教程
Jan 09 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
Jul 20 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
Apr 24 Javascript
javascript prototype原型详解(比较基础)
Dec 26 #Javascript
如何提高数据访问速度
Dec 26 #Javascript
Angular的模块化(代码分享)
Dec 26 #Javascript
详解Angular的数据显示优化处理
Dec 26 #Javascript
easyui combotree加载静态数据问题(选不上)解决方法
Dec 26 #Javascript
手动初始化Angular的模块与控制器
Dec 26 #Javascript
详解Python中logging日志模块在多进程环境下的使用
Dec 26 #Javascript
You might like
getimagesize获取图片尺寸实例
2014/11/15 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
详解React中的组件通信问题
2017/07/31 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
js中的闭包实例展示
2018/11/01 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
详解python 内存优化
2020/08/17 Python
前端制作动画的几种方式(css3,js)
2016/12/12 HTML / CSS
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
北大自主招生自荐信
2013/10/19 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
经济类毕业生求职信
2014/06/26 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书