2010-03-11 14 views
21

Estoy aprendiendo javascript y estoy analizando códigos existentes.JavaScript Expresión regular "Carácter de espacio único"

En mi libro de referencia de JS, dice que para buscar en un solo espacio, use "\s"?

Pero tengo encontré con el código

obj.match(/Kobe Bryant/); 

En lugar de utilizar \s, utiliza el espacio real?

¿Por qué esto no genera un error?

+0

La página MDN RegExp es un buen recurso para la expresión regular de JS y tratar con el objeto 'RegExp': https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp – toolbear

Respuesta

59

La clase de caracteres \s no solo contiene el carácter de espacio sino también otros Unicode white space characters. \s es equivalente a esta clase de caracteres:

[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000] 
+2

+1, probablemente le tomó más tiempo que los otros para buscar el enlace :-) –

+0

Es increíblemente importante para cualquiera que esté codificando datos considerar la diferencia entre "el único espacio real carbonizado", y 'cualquier usuario de espacio en blanco podría enviarme'. \ s es casi siempre lo que quiere, pero tenga cuidado ... si está codificando datos binarios, asegúrese de hacer coincidir solo 'barra espaciadora' \ u0020' – Ajax

5

No. Es perfectamente legal incluir un espacio literal en una expresión regular.

Sin embargo, no es equivalente: \s incluirá cualquier carácter en blanco, incluidas pestañas, espacios sin separación, espacios de ancho medio y otros caracteres, mientras que un espacio literal solo coincidirá con el carácter de espacio normal.

5

\s coincide con cualquier carácter de espacio en blanco, incluidas las pestañas, etc. Seguro también puede usar un espacio literal sin problemas. Al igual que puede usar [0-9] en lugar de \d para denotar cualquier dígito.

1

Además de los espacios normales, \s coincide con diferentes tipos de caracteres de espacios en blanco, incluyendo pestañas (y posiblemente caracteres de nueva línea, según la configuración). Dicho esto, la coincidencia con un espacio normal es ciertamente válida, especialmente en tu caso en el que parece que quieres unir un nombre, que normalmente está separado por un espacio normal.

Cuestiones relacionadas