JavaScript String.replace函数参数实例说明


Posted in Javascript onJune 06, 2013

Email:longsu2010 at yeah dot net
js String的replace函数的函数签名如下:
replace(match/* 字符串OR正则表达式 */, replacement/* 字符串OR函数 */)
作用是将源自符串中的match替换为replacement并返回替换后的字符串。
如果第一参数是字符串就没什么好说的了,但是要记住此时只在源自符串替换一次match(第一次)函数就执行完成了。

所以第一参数通常是一个正则表达式,举例如下:
replace(/a/g, "b") // 将源自符串中所有的a替换为b。

第二参数可以是一个字符串,该字符串中可以包含第一参数正则表达式的分组,举例如下:
replace(/(a){2,2}/g, "$1b") // 将源自符串中所有的aa替换为ab。

如果第二参数是一个函数的话,那么函数的参数是什么呢?举例如下:

"bbabc".replace(/(a)(b)/g, function(){ 
console.log(arguments) 
});

参数将依次为:
1、整个正则表达式匹配的字符。
2、第一分组匹配的内容、第二分组匹配的内容…… 以此类推直到最后一个分组。
3、此次匹配在源自符串中的下标(位置)。
4、源自符串
所以例子的输出是

["ab", "a", "b", 2, "bbabc"]

第二参数的返回值将会被替换到源自符串中,因若js函数无返值那么调用函数会得到undefined,所以如果第二参数无返回值undefined将会被替换到源自符串中。
如果第一参数是一个字符串,同时第二参数是一个函数的话,那就当成第一参数是一个没有分组的正则表达式好了,这样就可以确定第二参数的参数了。
文中有一些表述不当之处,如“替换到源自符串中”(源自符串只是充当模板的角色,并不真正发生改变,字符串是不可改变的变量),希望不会误导大家。

Javascript 相关文章推荐
jQuery中文入门指南,翻译加实例,jQuery的起点教程
Feb 09 Javascript
javascript 通用简单的table选项卡实现
May 07 Javascript
js 控制页面跳转的5种方法
Sep 09 Javascript
js键盘事件的keyCode
Jul 29 Javascript
express文件上传中间件Multer详解
Oct 24 Javascript
基于jQuery实现左侧菜单栏可折叠功能
Dec 27 Javascript
js实现炫酷的左右轮播图
Jan 18 Javascript
js自制图片放大镜功能
Jan 24 Javascript
vue2.0构建单页应用最佳实战
Apr 01 Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
jQuery实现列表的增加和删除功能
Jun 14 jQuery
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 #Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
Jun 06 #Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
Jun 06 #Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
Jun 06 #Javascript
原生js实现半透明遮罩层效果具体代码
Jun 06 #Javascript
jquery js 获取时间差、时间格式具体代码
Jun 05 #Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
Jun 05 #Javascript
You might like
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
PHP概率计算函数汇总
2015/09/13 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
2016/05/26 Javascript
Ionic快速安装教程
2016/06/03 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python实现把回车符\r\n转换成\n
2015/04/23 Python
python创建和删除目录的方法
2015/04/29 Python
python爬虫实现中英翻译词典
2019/06/25 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
机械制造与自动化应届生求职信
2013/11/16 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
世界环境日活动总结
2015/02/11 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
分家协议书范本
2016/03/22 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL