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 相关文章推荐
使用JQuery进行跨域请求
Jan 25 Javascript
jquery validation插件表单验证的一个例子
Mar 03 Javascript
ExtJs扩展之GroupPropertyGrid代码
Mar 05 Javascript
stream.js 一个很小、完全独立的Javascript类库
Oct 28 Javascript
Jquery实现弹出层分享微博插件具备动画效果
Apr 03 Javascript
jQuery之ajax删除详解
Feb 27 Javascript
js实现简单鼠标跟随效果的方法
Apr 10 Javascript
Javascript之Number对象介绍
Jun 07 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
Dec 19 Javascript
详解js树形控件—zTree使用总结
Dec 28 Javascript
vue swipe自定义组件实现轮播效果
Jul 03 Javascript
JavaScript缓动动画函数的封装方法
Nov 25 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
西德产收音机
2021/03/01 无线电
PHP自定义函数收代码
2010/08/01 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
php简单截取字符串代码示例
2016/10/19 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
自动最大化窗口的Javascript代码
2013/05/22 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
python开发之thread实现布朗运动的方法
2015/11/11 Python
浅谈python函数之作用域(python3.5)
2017/10/27 Python
python区分不同数据类型的方法
2019/10/14 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
股权转让协议书范本
2014/04/12 职场文书
2014财务年终工作总结
2014/12/08 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
2016党员党课心得体会
2016/01/07 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL