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 相关文章推荐
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
Jul 21 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
Nov 24 Javascript
初窥JQuery(一)jquery选择符 必备知识点
Nov 25 Javascript
JavaScript自执行闭包的小例子
Jun 29 Javascript
浏览器窗口加载和大小改变事件示例
Feb 27 Javascript
JavaScript 事件入门知识
Apr 13 Javascript
JavaScript实现cookie的写入、读取、删除功能
Nov 05 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
Dec 01 Javascript
jquery uploadify隐藏上传进度的实现方法
Feb 06 Javascript
Node.js使用supervisor进行开发中调试的方法
Mar 26 Javascript
浅析Vue中拆分视图层代码的5点建议
Aug 15 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
PHP中的正规表达式(二)
2006/10/09 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
python获得一个月有多少天的方法
2015/06/04 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
Python常用外部指令执行代码实例
2020/11/05 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
局域网定义和特性
2016/01/23 面试题
最新英语专业学生求职信范文
2013/09/21 职场文书
酒店销售主管岗位职责
2014/01/04 职场文书
美容院考勤制度
2014/01/30 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
建议书怎么写
2014/03/12 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
MySQL 四种连接和多表查询详解
2021/07/16 MySQL