2009-07-22 19 views
7

Estoy buscando un javascript regex para espacios en blanco. Estoy comprobando varias cadenas diferentes en un bucle y necesito ubicar las cadenas que tienen un gran espacio en blanco.javascript regex para espacios en blanco o  

La cadena de espacios en blanco se construye en un bucle, como esto ...

Por favor, lea este código como var whitespace = " " entonces el bucle acaba concats espacios más no de ruptura en él.

var whitespace = " " 

     for (var x = 0; x < 20; x++) { 
      whitespace += "&nbsp;" 
     } 

luego se usa más adelante en una cadena concat.

sometext += whitespace + someData; 

Necesito identificar las cadenas que contienen espacios en blanco (20 espacios).

¿O debería estar haciendo un contains(whitespace) o algo similar?

Cualquier ayuda es apreciada.

Saludos, ~ ck en San Diego

Respuesta

1

Si ha definido como un espacio en blanco 20 plazas, se puede hacer

var input = whitespace + someData; 
if(input.indexOf(whitespace) != -1) 
{ 
    //input contains whitespace. 
} 

No hay necesidad de usar expresiones regulares cuando se puede prescindir de él.

+0

Gracias Yogi !! Por cierto, ¿cómo recibes mis preguntas tan rápido? Cada vez que hago una pregunta de expresión regular, la respondes muy rápido. ¿Está relacionado con Twitter o algo así? Solo tenía curiosidad. ~ ck – Hcabnettek

+0

Hay preguntas sobre SO. Simplemente configura tu lector de RSS. :-) –

+0

¡Recibo un correo electrónico cada vez que publica una pregunta! ;) Es una broma. Me registro en SO cada pocas horas y veo si hay alguna pregunta que pueda responder. – SolutionYogi

32

Para esta pregunta específica, Yogi está en lo cierto: no necesitas expresiones regulares y probablemente estés mejor sin ella.

Para referencia futura, si alguien viene buscando, expresión regular tiene un carácter especial para los espacios en blanco:

\s 

En la jerga de JS (donde literales de expresiones regulares pueden encerrar en barras diagonales) si usted está buscando 20 espacios (no tabulaciones, saltos de línea, etc.) se puede hacer esto:

/ {20}/ 

también querrá tener en cuenta que muchos motores de navegador de expresiones regulares no tienen en cuenta la no separación espacio por espacios en blanco. La representación Unicode para el carácter NBSP es:

\u00A0 

combinada, en busca de cualquier combinación de 20 caracteres de espacio en blanco (incluyendo pestañas, etc.) o NBSPs en una fila (los corchetes denotan un 'clase de caracteres'):

/[\s\u00A0]{20}/ 

EDITAR: La incorporación de Thomas punto acerca de NBSP. Da tu comentario y/o responde un voto positivo si lo haces, sé que tengo.

+1

uno podría pensarlo, pero en realidad esto es simplemente incorrecto para muchos navegadores. – citykid

+1

Brillante! El punto de código Unicode para NBSP es exactamente lo que estaba buscando. Esto es útil para dividir una cadena en palabras: 'sentence.split (/ [\ s \ u00A0] + /)'. – thure

0

Para IE (Probé en IE7), \s no coincide con &nbsp; pero Chrome y Firefox sí. Por lo tanto, si desea eliminar espacios en blanco pero no &nbsp; (sin espacio de descanso), no use \s ya que no es seguro para el navegador.

Por ejemplo, si desea eliminar todos los espacios en blanco entre ellos \ n \ t pero no &nbsp;, puede utilizar \n \t y espacio en blanco, es decir: str.replace(/[\t \n]+/g, "")

Cuestiones relacionadas