逗号后面跟空格或只有逗号的正则表达式

8

是否可以使用多个分隔符制作正则表达式?例如,我想要拆分一个字符串,该字符串可以有两种形式:1. "string1, string2, string3"或2. "string1,string2,string3"。我一直在尝试在JavaScript中实现这一点,但迄今为止没有成功。


1
,\s|, 怎么样?它只匹配一个空格。 - user235273
3个回答

26

只需使用正则表达式的 split() 方法:

var string = "part1,part2, part3, part4,    part5",
    components = string.split(/,\s*/);

JS Fiddle演示

我使用*而不是?的原因很简单,它允许匹配没有空格或多个空格。而?只匹配零个或一个空格(这正是您所要求的,但即便如此)。

顺便说一下,如果可能会有逗号之前的空格,则修改 split()正则表达式可能值得考虑:

var string = "part1,part2  , part3, part4,    part5",
    components = string.split(/\s*,\s*/);
console.log(components);​

JS Fiddle演示

该演示展示了在逗号前后使用零个或多个空格进行字符串拆分的方法。当然,这种做法未必是必要的。

参考资料:


1
@DanielV :: +1 :: 应该接受这个解决方案,因为输入字符串可以是例如 string1,    string2,  string3,   string4,    string5,而Silva的代码则不能处理它。 - Ωmega

5

使用?使空格(\s)成为可选项:

var s = "string1,string2,string3";
s.split(/,\s?/);

非常好,谢谢。一旦允许我接受答案,我会立即接受它。 - DVM

1

除了Silva之外

以防你怀疑它可能有多个空格,那么使用(或没有空格)

var s = "string1, string2,  string3";
s.split(/,\s*/);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接