2009-07-22 24 views
7

Sto cercando un regex javascript per spazi vuoti. Sto verificando diverse stringhe diverse in un ciclo e ho bisogno di localizzare le stringhe che contengono il grande spazio bianco.regex javascript per spazi bianchi o  

La stringa di spazio bianco è costruito in un ciclo, come questo ...

Si prega di leggere questo codice come var whitespace = " " poi il ciclo Inserto solo più spazi non rottura su di esso.

var whitespace = " " 

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

quindi viene utilizzato in seguito in una stringa concat.

sometext += whitespace + someData; 

Ho bisogno di identificare le stringhe che contengono spazi bianchi (20 spazi).

O dovrei semplicemente fare uno contains(whitespace) o qualcosa di simile.

Qualsiasi aiuto è apprezzato.

Cheers, ~ ck a San Diego

risposta

1

Se avete definito spazio bianco come 20 posti, si può fare

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

Non v'è alcuna necessità di utilizzare regex quando si può fare a meno.

+0

Grazie Yogi !! A proposito, come fai a ricevere le mie domande così velocemente? Ogni volta che faccio una domanda di regex, rispondi molto velocemente. E 'collegato a Twitter o qualcosa del genere? Ero solo curioso. ~ ck – Hcabnettek

+0

C'è un feed di domande su SO. Basta impostare il tuo lettore RSS su di esso. :-) –

+0

Ricevo un'email ogni volta che pubblichi una domanda! ;) Stavo solo scherzando. Accedo a SO ogni poche ore e vedo se ci sono domande alle quali posso rispondere. – SolutionYogi

32

Per questa domanda specifica, Yogi è corretto - non hai bisogno di regex e probabilmente stai meglio senza di esso.

Per riferimento futuro, se qualcun altro arriva guardando, regex ha un carattere speciale per gli spazi bianchi:

\s 

In JS gergo (dove letterali regex possono essere racchiusi in avanti barre), se siete alla ricerca di 20 spazi (non tabulazioni, avanzamenti riga, ecc) si può fare questo:

/ {20}/ 

si potrà anche notare che molti motori del browser regex non considerano la non-rottura spazio per essere spazi bianchi. La rappresentazione unicode del carattere NBSP è:

\u00A0 

combinata, alla ricerca di qualsiasi combinazione di 20 caratteri di spaziatura (comprese le schede, ecc) OR NBSPs in una riga (le parentesi quadre denotano una 'classe di caratteri'):

/[\s\u00A0]{20}/ 

EDIT: Integrare thomas' punto circa NBSP. Dai il suo commento e/o rispondi ad un voto se vuoi - Lo so che ho.

+1

si potrebbe pensare così, ma in realtà questo è semplicemente sbagliato per troppi browser. – citykid

+1

Brillante! Il punto di codice Unicode per NBSP è esattamente quello che stavo cercando. Questo è utile per rompere una stringa in parole: 'sentence.split (/ [\ s \ u00A0] + /)'. – thure

0

Per IE (ho provato in IE7), \s non corrisponde a &nbsp; ma Chrome e Firefox lo fa. Quindi, se si desidera eliminare gli spazi bianchi ma non lo &nbsp; (senza spazio di interruzione), non utilizzare \s in quanto non è sicuro per il browser.

Per esempio, si vuole eliminare tutti gli spazi bianchi tra cui \ n \ t ma non &nbsp;, è possibile utilizzare \n \t e lo spazio bianco, vale a dire: str.replace(/[\t \n]+/g, "")

Problemi correlati