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 相关文章推荐
Jqyery中同等与js中windows.onload的应用
May 10 Javascript
js如何实现设计模式中的模板方法
Jul 23 Javascript
全面了解javascript中的错误处理机制
Jul 18 Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 Javascript
BootstrapTable refresh 方法使用实例简单介绍
Feb 20 Javascript
PHP自动加载autoload和命名空间的应用小结
Dec 01 Javascript
select获取下拉框的值 下拉框默认选中方法
Feb 28 Javascript
webstorm中vue语法的支持详解
May 09 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
浅谈js中的bind
Mar 18 Javascript
layui弹出框Tab选项卡的示例代码
Sep 04 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
Feb 27 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
PHP新手上路(二)
2006/10/09 PHP
PHP静态类
2006/11/25 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
js 单引号 传递方法
2009/06/22 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
python三大神器之fabric使用教程
2019/06/10 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
软件测试工程师面试问题精选
2016/10/28 面试题
2014年个人业务工作总结
2014/11/17 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python