删除带有正则表达式的连续逗号

时间:2016-10-19 07:27:52

标签: javascript regex replace

我用

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

5 个答案:

答案 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);