‘1 2 3‘.replace(/\d/g, parseInt)

题目:‘1 2 3’.replace(/\d/g, parseInt)

输出:1 NaN 3

分析:

replace全解析:String.prototype.replace()
replace语法:

str.replace(regexp|substr, newSubStr|function)

当第二个参数是function时候,回调函数会有多个参数。下面是该函数的参数:

变量名代表的值
match匹配的子串
p1,p2, …假如 replace() 方法的第一个参数是一个RegExp 对象,则代表第 n 个括号匹配的字符串。例如,如果是用 /(\a+)(\b+)/ 这个来匹配,p1 就是匹配的 \a+,p2 就是匹配的 \b+。
offset匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是 ‘abcd’,匹配到的子字符串是 ‘bc’,那么这个参数将会是 1)
string被匹配的原字符串。
NamedCaptureGroup命名捕获组匹配的对象

如果正则没有括号,或者没有括号匹配到的字符串,就没有p1,p2…,第二个参数就是偏移量offset;
parseInt语法:

parseInt(string, radix); // 其中radix从 2 到 36,代表进制

所以,题目等同于如下

 '1 2 3'.replace(/\d/g, (match, offset)=>parseInt(match, offset))
 
//  测试下match和offset结果:
 '1 2 3',replace(/\d/g, (match, offset) => {
 	console.log(match, offset)
 	// 1 0
 	// 2 2
 	// 3 4
 })

输出:
parseInt(1,0) // 1
parseInt(2,2) // NaN
parseInt(3,4) // 3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值