2013-03-14 165 views
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(',', '*'); 

这甚至没有考虑到额外的空白。有我可以申请照顾这个正则表达式模式吗?

感谢

回答

2

您可以清晰做[]以下

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

我已经把空间。

请注意,JavaScript中的正则表达式需要在其周围使用/。该模式匹配0或1空格,然后匹配逗号,然后匹配0或1空格。


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

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

什么标签?改用'\ s'。 '''会匹配0或1次出现 – Zeta 2013-03-14 18:29:39

+0

@Zeta我刚刚注意到这个问题在我第一次回答的时候被编辑过。 – 2013-03-14 18:33:09

4

请尝试以下方法吗?

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

@ BERGI的答案还增加了g标志来捕获所有逗号(含空格),所以根据您的输入,可正常工作。