手机版

也谈JavaScript中String类的替换功能

时间:2021-10-17 来源:互联网 编辑:宝哥软件园 浏览:

回调函数的参数描述也很准确:第一个参数是匹配的字符串,最后一个是原字符串,倒数第二个参数是原字符串索引中匹配字符串的起始位。但是我很好奇,从第二个到最后第三个参数是什么?其实W3school已经给出了答案:复制代码如下。 replace()方法用于用其他字符替换字符串中的某些字符,或者替换匹配正则表达式的子字符串。它的语法是:stringobject。替换(regexp/substr,替换)。替换可以是字符串或函数。如果它是一个字符串,那么每个匹配将被替换为一个字符串。ECMAScript v3规定replace()方法的参数替换可以是函数,而不是字符串。在这种情况下,每个匹配调用函数号,它返回的字符串将用作替换文本。函数的第一个参数是与模式匹配的字符串。以下参数是与模式中子表达式匹配的字符串,可以有0个或更多这样的参数。下面的参数是一个整数,它声明匹配出现在stringObject中的位置。最后一个参数是stringObject本身。显然,从替换函数底部第二个到第三个的参数是“与模式中子表达式匹配的字符串”,具体数量取决于子表达式的数量。因此,我们给出两个例子进行比较:例1: string:' CJ9080 '匹配模式为:/CJ[0-9]{2}/g(无子表达式)预期结果:替换函数有三个参数。它们是:[0]“cj90”[1]0[2]“CJ 9080”测试代码:复制代码如下:函数replace str(s){ return s . replace(/CJ[0-9]{ 2 }/g,function () {for (var I=0,我透镜;I){ console . info(' Argument ' I ' : ' arguments[I]);} });};运行结果:

示例2:字符串:“CJ9080”匹配模式为:/((CJ)([0-9]{2})/g(有3个子表达式:(CJ[0-9]{2})、(CJ)、([0-9]{ 2 }))预期结果。它们是:[0]“cj90”[1]“cj90”[2]“CJ”[3]“90”[4]0[5]“CJ 9080”测试代码:复制代码如下:函数replace str(s){ return s . replace(/(CJ。我透镜;I){ console . info(' Argument ' I ' : ' arguments[I]);} });};运行结果:

显然,两个测试示例的结果与预期一致。描述:当replace函数的替换为一个函数时,这个函数的参数正好如W3school所说:[0]:一个与模式匹配的字符串;[1-(length-3)]:与模式中子表达式匹配的0个或更多字符串;[length-2]:匹配字符串位于原始字符串的索引起始位置,从0开始;[长度-1]:原始字符串。

版权声明:也谈JavaScript中String类的替换功能是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。