2013-05-22 6 views
5

JavaScript正規表現の拒否nullを一致させることはできますか?Javascript正規表現分割拒否null

null値を拒否するようにString.split()メソッドに通知できますか?

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

-

私はこれをテストしていた間、私は事故に部分的な答えに出くわした:

console.log("abccacaab".split(/a+/)); 
//returns: ["", "bcc", "c", "b"] 
//   ^^ 
:試合は開始の時に問題が発生し、

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

しかし、

清潔な回答はありますか?それともそれに対処しなければならないのでしょうか?

+0

どのように? – Gumbo

+0

@nathanhayfieldそれは私が避けたがっているものです – Isaac

答えて

22

これは正確には正規表現の解決策ではありませんが、フィルターを使用するとすぐに作業を進めることができます。

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

これはfalsey ""値を除外します。

+0

素敵できれいな、それは私が後にしているものです、ありがとう – Isaac

+0

あなたは大歓迎です。 –

+0

私はあなたのすべての担当者を盗んだような気がする! http://sackoverflow.com/questions/19888689/remove-empty-strings-from-array-while-keeping-record-without-loop/19888749#19888749 – Isaac

1

あなたが分割する前に、文字列の両端からマッチをトリム:C ' `以外のすべての文字列に一致する程度

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

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

それは素敵ですが、squintの答えと同じくらいきれいではありませんが、 – Isaac

+0

@Nope、あなたはnathanhayfieldにあなたが配列全体を反復して空の文字列を削除することを避けたいと言ったからです。 – Paulpro