str.replace(/xxx/g, (yyy)=>{...}) 的用法

参数

developer.mozilla.org/zh-CN/docs/W... 拷贝了一例稍加修改而来,运行结果如下

str.replace(/xxx/g, (yyy)=>{...})  的用法

回调函数的参数个数是可变的
1、第一个参数是整体的匹配结果;
2、其中 p1、p2、p3、p4… 这些参数是与正则表达式中的圆括号 () 匹配结果相对应的;
3、倒数第二个参数是整体匹配的开始索引;
4、最后一个参数是原始字符串 str 的值

function replacer(match, p1, p2, p3, offset, string) {
    console.log(match, p1, p2, p3, offset, string)
  // p1 is nondigits, p2 digits, and p3 non-alphanumerics
  return [p1, p2, p3].join(' - ');
}
var newString = '007abc12345#$*%'.replace(/([^\d]+)(\d+)([^\w]+)/, replacer);
console.log(newString);  // abc - 12345 - #$*%

新、旧字符串及回调函数的执行条件

对上例再做修改,运行结果如下
str.replace(/xxx/g, (yyy)=>{...})  的用法
可以看出
1、回调函数执行的条件是匹配成功,如果不匹配则不会执行;
2、执行 replace() 进行替换操作时,并不会更改原始字符串(本例 oldString 始终不变)

function replacer(match, p1, p2, p3, offset, string) {
  console.log('找到', p1, p2, p3)
  return [p1, p2, p3].join('_');
}

var oldString = '007abc12345#$*%';
var newString = oldString.replace(/([^\d]+)(\d+)([^\w]+)/, replacer);
console.log(oldString,(oldString===newString?'=':'!='),newString);

oldString = '007abc12345xyz#$*%';
newString = oldString.replace(/([^\d]+)(\d+)([^\w]+)/, replacer);
console.log(oldString,(oldString===newString?'=':'!='),newString);
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
63
粉丝
17
喜欢
140
收藏
118
排名:132
访问:7.4 万
私信
所有博文
社区赞助商