失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java replace第二个 字符串正则替换replace第二个参数是函数的问题

java replace第二个 字符串正则替换replace第二个参数是函数的问题

时间:2021-03-07 13:25:16

相关推荐

java replace第二个 字符串正则替换replace第二个参数是函数的问题

按照JS高程的说法,如下

replace()方法的第二个参数也可以是一个函数。在只有一个匹配项(即与模式匹配的字符串)的情况下,会向这个函数传递3个参数:模式的匹配项、模式匹配项在字符串中的位置和原始字符串。在正则表达式中定义了多个捕获组的情况下,传递给函数的参数依次是模式的匹配项、第一个捕获组的匹配项、第二个捕获组的匹配项......,但最后两个参数仍然分别是模式的匹配项在字符串中的位置和原始字符串。

高程的这种描述是有问题的,根据高程理解,若函数参数只有2个参数,那这两个参数应分别是模式的匹配项在字符串中的位置和原始字符串。其实,这这两个参数还是模式的匹配项、第一个捕获组的匹配项。内部实现应该是用了arguments[0]、arguments[1]。下面这2段代码可以进行理解。

var toUrl = user/add?id=$18&t=update.replace(/\$(\d+)/g, function (a, b) {

console.log(a);

console.log(b);

});

结果

var toUrl = user/add?id=$18&t=update.replace(/\$(\d+)/g, function (a, b, c, d) {

console.log(a);

console.log(b);

如果觉得《java replace第二个 字符串正则替换replace第二个参数是函数的问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。