0

我有一个看起来像这样的变量:

var name = 'John, Doe';

这个名字也可以这样表示:

var name = 'john , doe';

或者

var name = 'john ,doe';

甚至

var name = 'john    ,   doe';

在所有情况下,我想让这个名字最终是这样的:

var name = 'john*doe';

通过执行以下操作,我已经违反了 DRY 原则:

name= name.replace(' ,', '*');
name= name.replace(', ', '*');
name = name.replace(',', '*');

这甚至没有考虑额外的空白。有没有我可以申请的正则表达式模式来解决这个问题?

谢谢

4

3 回答 3

4

试试下面这个?

name = name.replace(/\s*,\s*/, '*');

@Bergi 的回答还添加了g标记以捕获所有逗号(带空格),因此根据您的输入,这也可能有效。

于 2013-03-14T18:29:48.700 回答
4

您可以使用多次重复的\s空白字符类

name = name.replace(/\s*,\s*/g, '*');
于 2013-03-14T18:29:58.537 回答
2

您可以执行以下操作

name = name.replace(/[ ]*,[ ]*/, '*');

为了清楚起见,我在 [] 中放置了空格。

请注意,JavaScript 中的正则表达式需要/围绕它。该模式匹配 0 或 1 个空格,然后是逗号,然后是 0 或 1 个空格。


如果可以有制表符,也可以使用\s而不是空格。将\s匹配任何类型的空间。所以 :

name = name.replace(/\s*,\s*/, '*');
于 2013-03-14T18:28:57.710 回答