我怎样才能通过空格或逗号分割JavaScriptstring?

如果我尝试

"my, tags are, in here".split(" ,") 

我得到以下

 [ 'my, tags are, in here' ] 

而我想要的

 ['my', 'tags', 'are', 'in', 'here'] 

String.split也可以接受一个正则expression式:

 input.split(/[ ,]+/); 

这个特定的正则expression式在一个或多个逗号或空格的序列上进行分割,因此例如多个连续的空格或逗号+空格序列不会在结果中产生空元素。

使用.split(/[ ,]+/)是好的,但是早晚使用自然语句会最终获得数组中的空元素。 例如['foo', '', 'bar']

如果你的用例没问题,那就好了。 但是,如果你想摆脱空的元素,你可以做:

 var str = 'whatever your text is...'; str.split(/[ ,]+/).filter(Boolean); 
 "my, tags are, in here".split(/[ ,]+/) 

结果是:

 ["my", "tags", "are", "in", "here"] 

你可以使用正则expression式来捕捉任何长度的空格,这就像:

  var text = "hoi how are you"; var arr = text.split(/\s+/); console.log(arr) will result : ["hoi", "how", "are", "you"] console.log(arr[2]) will result : "are" 

input.split(/\s*[\s,]\s*/)

\s*匹配零个或多个空白字符(不只是空格,还包括制表符和换行符)。

[\s,]匹配一个空白字符或一个逗号

如果你想避免像"foo,bar,,foobar"这样的input中的空白元素,这将做到这一点:

input.split(/(\s*,?\s*)+/)

+匹配一个或多个前面的字符或组。

编辑:

已添加? 在逗号之后匹配零个或一个逗号。

编辑2:

原来编辑1是一个错误。 修复。 现在必须至less有一个逗号或一个空格来expressionfind一个匹配。

当我想要考虑到像逗号这样的额外字符(在我的情况下,每个标记都可以用引号input),我会做一个string.replace()来将其他分隔符更改为空白,然后分割空白。