我用
str.replace(/(^,)|(,$)/g, '')
删除前导和尾随逗号。
如何扩展它以便我也删除两个连续的逗号?
因此,some text,,more text,
应该成为some text,more text
?
一种方法是与
链接str.replace(/(^,)|(,$)/g, '').replace(/,,/g, ',')
但随后,some text,,,,more text,
将变为some text,,more text
而不是some text,more text
。
答案 0 :(得分:3)
删除前导和尾随逗号,然后用单个逗号替换多个连续逗号
securityContaext.xml
str.replace(/^,|,$|(,)+/g, '$1');
将匹配一个或多个逗号,+
- 全局标记以替换它的所有匹配项。
g
答案 1 :(得分:3)
您可以添加一个替代分支并将其与捕获组括起来,然后使用替换回调方法,您可以在其中分析匹配组并相应地执行替换:
var s = ',some text,,,,more text,';
var res = s.replace(/^,|,$|(,+)/g, function(m,g1) {
return g1 ? ',' : '';
});
console.log(res);
要使用逗号分割并在结果数组中不获取空条目,请使用简单的
console.log(',some text,,,,more text,'.split(',').filter(Boolean));
答案 2 :(得分:2)
由于您似乎在使用str
as a source for an array,因此您可以将所有.replace
来电替换为:
var str = ",some text,,,,more text,";
var resultArray = str.split(',') // Just split the string.
.filter(function(item){ // Then filter out empty items
return item !== '';
});
console.log(resultArray)
无需担心前导,尾随或双逗号。
答案 3 :(得分:1)
如果只替换为",some text,,,,more text,".replace(/(^,)|(,$)|,(?=,)/g, '');
<强> [编辑] 强>
请注意,lookbehinds在javascript中不起作用。所以你只能使用这样的前瞻。
答案 4 :(得分:1)
您可以使用另一个逗号添加正向前瞻。
var str = ',some text,,more text,';
str = str.replace(/^,|,$|,(?=,)/g, '')
console.log(str);