使用正则表达式删除连续逗号

Remove consecutive commas with regex

本文关键字:连续 删除 正则表达式      更新时间:2023-09-26

我使用

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.

由于您似乎正在使用str作为数组的源,因此您可以将所有.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)

无需担心前导、尾随或双逗号。

删除前导逗号和尾随逗号,然后将多个连续逗号替换为单个逗号

str.replace(/^,|,$|(,)+/g, '$1');

,+将匹配一个或多个逗号,g -global 标志来替换它的所有匹配项。

var str = ',some text,,more text,';
str = str.replace(/^,|,$|(,)+/g, '$1');
console.log(str);

您可以添加一个替代分支并将其与捕获组括起来,然后使用替换回调方法,您可以在其中分析匹配组并相应地执行替换:

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

你可以用另一个逗号添加一个积极的展望。

var str = ',some text,,more text,';
str = str.replace(/^,|,$|,(?=,)/g, '')
console.log(str);

一个替换只像:",some text,,,,more text,".replace(/(^,)|(,$)|,(?=,)/g, '');

[编辑]

请注意,lookbacks 在 javascript 中不起作用。 所以你只能像这样使用前瞻。