Regexp разделяет строку запятыми и пробелами, но игнорирует переносимые слова?

Мне нужно регулярное выражение для разделения строки запятыми и/или пробелами, но игнорировать переносимые слова - что лучший способ сделать это?

так, например - мне бы хотелось...

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

для возврата

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

но когда я это делаю, он включает такие запятые...

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

Ответ 1

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

Ответ 2

Вы можете указать класс символов, который говорит, что нужно разделить на вещи, которые не являются дефисом или символами слова:

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

Или вы можете разделить только на пробелы и запятые, используя класс символов, такой как который предоставил Ocson.

Ответ 3

Или если вы хотите быть ДЕЙСТВИТЕЛЬНО явным о разделителях:

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

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

Ответ 4

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