2013-05-22 4 views
5

Est-il possible de faire un regex JavaScript rejets null correspond?Javascript regex split reject null

Peut-on demander à la méthode String.split() de rejeter les valeurs nulles?

console.log("abcccab".split("c")); 
//result: ["ab", "", "", "ab"] 
//desired result: ["ab", "ab"] 

-

Pendant que je testais cela, je suis tombé sur une réponse partielle sur un accident:

console.log("abccacaab".split(/c+/)); 
//returns: ["ab", "a", "aab"] 

Mais, un problème se pose lorsque le match est au début:

console.log("abccacaab".split(/a+/)); 
//returns: ["", "bcc", "c", "b"] 
//   ^^ 

Y a-t-il une réponse propre? Ou devons-nous simplement nous en occuper?

+0

Comment faire correspondre toutes les séquences de caractères, sauf 'C'? – Gumbo

+0

@nathanhayfield C'est ce que je veux éviter – Isaac

Répondre

22

Ce n'est pas précisément une solution regex, mais un filtre en ferait un travail rapide.

"abcccab".split("c").filter(Boolean); 

Cela va filtrer les valeurs Falsey "".

+0

Nice et propre, c'est ce que je suis après, merci – Isaac

+0

De rien. –

+0

J'ai l'impression d'avoir volé tout ton rep! http://stackoverflow.com/questions/19888689/remove-empty-strings-from-array-while-keeping-record-without-loop/19888749#19888749 – Isaac

1

Couper les matchs des extrémités de la chaîne avant de diviser:

console.log("abccacaab".replace(/^a+|a+$/g, '').split(/a+/)); 

// ["bcc", "c", "b"] 
+0

C'est sympa, pas aussi propre que la réponse du strabisme – Isaac

+0

@ Non, je l'ai laissé ici parce que tu as dit à nathanhayfield que tu voulais éviter d'itérer à travers le tableau et de supprimer les chaînes vides, ce que fait le filtre. – Paulpro