[英]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.