使用正则表达式将字符串 'a , b,c' 替换为 'a, b, c'

Luv*_*ias 1 javascript regex

我怎样才能转换这个字符串

a   ,  b,c,d , e,  f
Run Code Online (Sandbox Code Playgroud)

到:

a, b, c, d, e, f
Run Code Online (Sandbox Code Playgroud)

我正在尝试这个正则表达式,但它没有达到我的预期:

str.replace(/(\w)|(?:[ \t]+),(\w)|(?:[ \t]+)/g, "$1, $2")
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 14

您可以这样使用它:

var str = 'a   ,  b,c,d , e,  f';
console.log( str.replace(/\s*,\s*/g, ', ') );
//=> a, b, c, d, e, f
Run Code Online (Sandbox Code Playgroud)

这里模式\s*,\s*搜索两边都有 0 个或多个空格包围的逗号,我们将其替换为, 以获得所需的输出。


Que*_*tin 5

正则表达式不是最容易维护的代码。您可以通过将字符串转换为数组,删除多余的空格,然后将其转换回带有所需分隔符的字符串来实现此目的。

它可能会稍微慢一些,但这不太可能产生明显的影响,并且它会导致更容易阅读代码:

const result = "a   ,  b,c,d , e,  f"
  .split(",")
  .map(char => char.trim())
  .join(", ");
  
console.log(result);
Run Code Online (Sandbox Code Playgroud)