2009-12-02 12 views
11

Ich brauche eine Regexp, um eine Zeichenfolge durch Kommas und/oder Leerzeichen zu trennen, aber Bindestriche ignorieren - was ist der beste Weg, dies zu tun?Regexp Split-String durch Kommas und Leerzeichen, aber ignorieren Bindestriche?

so zum Beispiel - ich dies möchte ...

"foo bar, zap-foo, baz".split(/[\s]+/) 

zurückzukehren

["foo", "bar", "zap-foo", "baz"] 

aber wenn ich tun, dass es die Kommas wie dies schließt ...

["foo", "bar,", "zap-foo,", "baz"] 

Antwort

29

"foo bar, zap-foo, baz".split(/[\s,]+/)

+1

'[ "foo", "bar", "ZAP-foo", "baz"] 'ist die Ausgabe, aber können wir ** NICHT ** Split' ["foo bar"] 'als' ["foo" und "bar"] ' – carbonr

5

Sie können eine Zeichenklasse angeben, die besagt, dass sie auf Dinge aufgeteilt wird, die keine Bindestriche oder Wortzeichen sind:

Oder Sie können nur auf Leerzeichen und Kommas mit einer Zeichenklasse wie die Ocson has provided teilen.

2

Oder wenn Sie wirklich wollen, explizit über die Separatoren sein:

"foo bar, zap-foo, baz".split(/ |, |,/) 

=> ["foo", "bar", "zap-foo", "baz"] 
2
"foo bar, zap-foo, baz".split(/[\s.,]+/) 
+0

verwenden" am Anfang – Amit

Verwandte Themen