2009-12-02 18 views
11

Necesito una expresión regular para dividir una cadena por comas y/o espacios, pero ignoro las palabras con guiones: ¿cuál es la mejor manera de hacerlo?regexp dividir cadena por comas y espacios, pero ignorar palabras con guiones?

así, por ejemplo - Me gustaría esto ...

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

para volver

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

pero cuando lo hago porque incluye las comas como este ...

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

Respuesta

29

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

+1

'[ "foo", "barra", "zap-foo", "baz"] 'es la salida pero podemos ** NO ** dividir' ["foo bar"] 'as' ["foo" y "bar"] ' – carbonr

5

Puede especificar una clase de caracteres que diga dividir en elementos que no sean guiones o caracteres de palabra:

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

O puede dividir solo en espacios en blanco y comas usando una clase de caracteres como la de Ocson has provided.

2

O si quieres ser realmente explícito acerca de los separadores:

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

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

usar" al principio – Amit

Cuestiones relacionadas