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 相关文章推荐
JS去除数组重复值的五种不同方法
Sep 06 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
node.js中的path.delimiter方法使用说明
Dec 09 Javascript
node.js开机自启动脚本文件
Dec 24 Javascript
Boostrap模态窗口的学习小结
Mar 28 Javascript
js ajaxfileupload.js上传报错的解决方法
May 05 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
bootstrap按钮插件(Button)使用方法解析
Jan 13 Javascript
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
Sep 27 Javascript
解决vue项目router切换太慢问题
Jul 19 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
JAVA/JSP学习系列之七
2006/10/09 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHP分页类集锦
2014/11/18 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
Django接受前端数据的几种方法总结
2016/11/04 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
python编写微信公众号首图思路详解
2019/12/13 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
高中运动会广播稿
2014/01/21 职场文书
社团文化节策划书
2014/02/01 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
小学中等生评语
2014/12/29 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
作弊检讨书范文
2015/05/06 职场文书
项目备案申请报告
2015/05/15 职场文书
保护地球的宣传语
2015/07/13 职场文书
工伤调解协议书
2016/03/21 职场文书
python实现剪贴板的操作
2021/07/01 Python