繁体   English   中英

如何替换除第一次出现之外的所有匹配字符

[英]How to replace all matching characters except the first occurrence

我正在尝试使用正则表达式来比较JavaScript中的字符串。 我想用空字符''替换所有'.'s'%'s ,但是我不想替换第一次出现'.'

value.replace(/\%\./g, '');

预期结果如下:

.4.5.6.7. ==> .4567
4.5667.444... ==> 4.56667444
..3445.4 ==> .34454

您可以传入一个replace函数,并跳过第一个匹配,如下所示:

var i = 0;
value.replace(/[\.\%]/g, function(match) { 
    return match === "." ? (i++ === 0 ? '.' : '') : ''; 
});

这是一个没有外部变量的自包含版本:

value.replace(/[\.\%]/g, function(match, offset, all) { 
   return match === "." ? (all.indexOf(".") === offset ? '.' : '') : ''; 
}) 

第二个版本使用传递给replace()函数的offset来与第一个版本的索引进行比较. 找到原始字符串( all )。 如果它们是相同的,则正则表达式将其保留为a . 后续匹配将具有比第一个更高的偏移. 匹配,并将替换为'' %将始终替换为''


两个版本都会导致:

4.5667.444 ... ==> 4.56667444
%4.5667.444 ... ==> 4.5667444

两个版本的演示: http//jsbin.com/xuzoyud/5/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM