2010-08-02 18 views
13

que estaba buscando una función de ajuste en JavaScript que no existe y un poco de código en buscar en Google sugiere que el uso:recortar en javascript? ¿Qué está haciendo este código?

function trimStr(str) { 
    return str.replace(/^\s+|\s+$/g, ''); 
} 

que quieren saber cómo str.replace(/^\s+|\s+$/g, '') obras. Entiendo que esta es una forma de expresión regular, pero no sé lo que está haciendo.

Respuesta

30

/^\s+|\s+$/g busca espacios en blanco desde el principio o el final de la cadena. La expresión se puede dividir en dos partes, ^\s+ y \s+$, que están separadas por | (OR). La primera parte comienza desde el comienzo de la cadena (^) e incluye tantos caracteres de espacio en blanco que puede (\s+). La segunda parte hace lo mismo pero a la inversa y para el final usando el signo de dólar ($).

En la llanura Inglés, la expresión regular sería algo así:

encontrar tantos espacios en blanco desde el principio de la cadena como posibles o como muchos espacios en blanco del final como sea posible.

Tenga en cuenta que \s coincide con espacios, pestañas y saltos de línea.

La parte /g en el extremo permite la búsqueda global, que permite múltiples reemplazos (por ejemplo, no solo el comienzo, sino también el final de la cadena).

+0

tiene todo excepto/g.¿Podría dar más explicaciones acerca de que hay más ejemplos –

+0

que me confunden con "/ g parte al final permite la búsqueda global" ¿por qué lo necesitamos aquí. Como ya hemos incluido la condición para el inicio y el final de la cadena –

+5

@sushil, aquí la bandera global significa que puede haber más de un reemplazo. Sin eso, solo reemplazaría el primer partido. Por ejemplo. '" foo ".replace (/^\ s + | \ s + $ /," ")' (no global) es '" foo "' –

4

^ es el comienzo de la cadena, y $ es el final. \s significa un carácter de espacio en blanco (que en JavaScript significa pestaña, pestaña vertical, alimentación de formulario, espacio, espacio de no corte, marca de orden de bytes, separador de espacio Unicode (categoría Z), avance de línea, retorno de carro, separador de línea o separador de párrafo), y + significa 1 o más. | es la alternancia, una elección entre dos posibilidades. g es la bandera global. Entonces la expresión regular significa el comienzo, luego uno o más espacios en blanco, o uno o más espacios en blanco, luego el final. Luego, reemplazamos todas las coincidencias (ya que es global) con la cadena vacía.

Le puede interesar blog post, que analiza con más detalle de lo que probablemente necesita :) los pros y los contras de varias funciones de ajuste.

+1

'\ s' significa más que un espacio (significa espacios en blanco). En JS incluye los caracteres '[\ r \ n \ t]'. –

+2

@Andy, gracias, en realidad era consciente de eso, pero no lo expresé bien. No quise decir que era solo ASCII 0x20 (espacio real). Lo he aclarado; en realidad son varios más personajes de los que dijiste. –

+0

bien hecho para la aclaración adicional, acabo de incluir los personajes de los que estaba completamente seguro. Sin embargo, debe saber que '\ s' solo está especificado para coincidir con la lista de materiales a partir de la quinta edición de ECMA-262 (no se incluyó en la 3ª edición). Además, en Internet Explorer hasta la versión 8, los caracteres exactos que coinciden con '\ s' son equivalentes a' [\ f \ n \ r \ t \ v] ', por lo que su lista no es una referencia ideal para el cruce completo. compatibilidad con el navegador –

Cuestiones relacionadas