博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS中的replace(RegExp, Function)
阅读量:5926 次
发布时间:2019-06-19

本文共 1662 字,大约阅读时间需要 5 分钟。

最近看Qwrap代码,查阅了一些关于replace里function参数的问题。

ECMScript文档里写的是

String.prototype.replace (searchValue, replaceValue)

如果 replaceValue 是函数,则对每个匹配的子字符串,以 m + 3 个参数调用这个函数。第一个参数是匹配的子字符串。如果 searchValue 是正则表达式,接下来 m 个参数是 MatchResult(见 15.10.2.1)里的所有捕获值。第 m + 2 个参数是发生的匹配在 string 里的偏移量,第 m + 3 个参数是 string。结果是将输入的原字符串里的每个匹配子字符串替换为相应函数调用的返回值(必要的情况下转换为字符串)得到的字符串。

http://ecmascript.cn/#387

 

 

runcode

<html> <body> <script> var QW={}; /** * @class Browser js的运行环境,浏览器以及版本信息。(Browser仅基于userAgent进行嗅探,存在不严谨的缺陷。) * @singleton * @namespace QW */ QW.Browser = (function() { var na = window.navigator, ua = na.userAgent.toLowerCase(), browserTester = /(msie|webkit|gecko|presto|opera|safari|firefox|chrome|maxthon|android|ipad|iphone|webos|hpwos)[ \/os]*([\d_.]+)/ig, Browser = { platform: na.platform }; ua.replace(browserTester, function(a, b, c) { var bLower = b.toLowerCase(); for(var i = 0;i < arguments.length;i++){    document.write("第"+(i+1)+"个参数的值:"+arguments[i]+"<br />");   } if (!Browser[bLower]) { Browser[bLower] = c; } }); if (Browser.opera) { //Opera9.8后版本号位置变化 ua.replace(/opera.*version\/([\d.]+)/, function(a, b) { Browser.opera = b; }); } if (Browser.msie) { Browser.ie = Browser.msie; var v = parseInt(Browser.msie, 10); Browser['ie' + v] = true; } return Browser; }()); if (QW.Browser.ie) { try { document.execCommand("BackgroundImageCache", false, true); } catch (e) {} } </script> </body> </html>

运行代码  [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

 

第一个参数得到的是匹配的整体字符串

然后依次的参数得到的是括号包括的子字符串

倒数第二个参数是字符串的偏移量

最后一个参数返回的是整个字符串。

 

https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Global_Objects/String/replace

转载于:https://www.cnblogs.com/myzykj/archive/2013/02/22/2919115.html

你可能感兴趣的文章
物联网离风口还差最关键一环?
查看>>
如何评价国内SRC纷纷上线“白帽子协议”?
查看>>
这些Intel Atom处理器千万别升Windows 10创意者更新:不兼容
查看>>
免费都不管用,Win10升级在中国怎么就这么难?
查看>>
AI+时代,谈谈产品经理对图像识别技术的阈值控制
查看>>
运营商在万物互联扮演什么角色?上海联通NB-IoT奠定基础
查看>>
机器学习模型开发必读:开源数据库最全盘点
查看>>
Win10用户远超4亿 Win10 RS2明年年初发布
查看>>
长江存储年底提供自研32层堆叠3D NAND闪存样品
查看>>
阿里云欧洲数据中心开放运营:与沃达丰达成战略合作
查看>>
顺义教委携手华平共建视频图像综合管理平台
查看>>
苹果、联想及华硕均看准美国电脑运输的增长
查看>>
大数据先行 传统金融转型需从体制上创新
查看>>
Kuzzle,一种内部部署的文档后端
查看>>
大数据服务社会的一个有益实践
查看>>
大数据在金融领域的应用及问题时
查看>>
ARM再出手,软银攀登新高山
查看>>
易成新能加码光伏产业链 作价28.29亿收购赛维两子公司
查看>>
光伏领跑者火热前行 可靠性护航“长跑”
查看>>
2015年最弱的密码,和最强的密码
查看>>