Comment puis-je diviser une chaîne JavaScript par l'espace blanc ou la virgule?

Si j'essaie

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

Je reçois le suivant

 [ 'my, tags are, in here' ] 

Alors que je veux

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

String.split peut également accepter une expression régulière:

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

Ce regex particulier se divise sur une séquence d'une ou plusieurs virgules ou espaces, de sorte que, par exemple, plusieurs espaces consécutifs ou une séquence de virgule + espace ne produisent pas d'éléments vides dans les résultats.

La suggestion d'utiliser .split(/[ ,]+/) est bonne, mais avec des phrases naturelles tôt ou tard, vous finirez par obtenir des éléments vides dans le tableau. Par exemple ['foo', '', 'bar'] .

Ce qui est bien si ça coûte bien pour votre cas d'utilisation. Mais si vous voulez vous débarrasser des éléments vides, vous pouvez le faire:

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

le résultat est :

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

Vous pouvez utiliser regex afin d'attraper n'importe quelle longueur d'espace blanc, et ce serait comme:

  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* correspond à zéro ou plus de caractères d'espace blanc (pas seulement des espaces, mais aussi des onglets et des nouvelles lignes).

[\s,] correspond à un caractère d'espace blanc ou à une virgule

Si vous souhaitez éviter les éléments vierges de l'entrée comme "foo,bar,,foobar" , cela fera l'affaire:

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

Le + correspond à un ou plusieurs des personnages ou groupes précédents.

Modifier:

Ajouté ? Après une virgule qui correspond à zéro ou une virgule.

Modifier 2:

L'éditeur 1 est une erreur. L'a corrigé. Maintenant, il doit y avoir au moins une virgule ou un espace pour que l'expression trouve une correspondance.

Lorsque je veux prendre en compte des caractères supplémentaires comme vos virgules (dans mon cas chaque jeton peut être entré avec des guillemets), je ferais un string.replace () pour changer les autres délimiteurs en blanc puis diviser en blanc.