2009-07-22 14 views
7

Szukam wyrażeń regularnych javascript dla białych znaków. Sprawdzam kilka różnych ciągów w pętli i potrzebuję zlokalizować ciągi, które mają duży biały obszar w nich.regex javascript dla białych znaków lub  

białej przestrzeni łańcuch zbudowany jest w pętli, jak to ...

proszę przeczytać ten kod jako var whitespace = " " następnie pętla tylko concats więcej niż przestrzenie zerwania na niego.

var whitespace = " " 

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

następnie używany jest później w konkatencie łańcuchowym.

sometext += whitespace + someData; 

Potrzebuję zidentyfikować ciągi zawierające białe spacje (20 spacji).

Czy powinienem po prostu robić contains(whitespace) lub coś podobnego.

Każda pomoc jest doceniana.

Cheers, ~ ck w San Diego

Odpowiedz

1

Jeśli zdefiniowano jako spacje 20 miejsc, można zrobić

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

Nie ma potrzeby, aby użyć wyrażenia regularnego, kiedy można zrobić bez niego.

+0

Dzięki Yogi !! A tak przy okazji, jak dostaję moje pytania tak szybko? Zawsze, gdy zadaję pytanie o wyrażenie regularne, odpowiadasz bardzo szybko. Czy to dotyczy twittera? Byłem tylko ciekawy. ~ ck – Hcabnettek

+0

Na stronie SO znajduje się plik pytań. Po prostu ustaw dla niego swój czytnik RSS. :-) –

+0

Otrzymuję wiadomość e-mail za każdym razem, gdy publikujesz pytanie! ;) Żartuję. Loguję się do SO co kilka godzin i sprawdzam, czy są jakieś pytania, na które mogę odpowiedzieć. – SolutionYogi

32

W przypadku tego konkretnego pytania, jogin jest poprawny - nie potrzebujesz regex i prawdopodobnie bez niego lepiej.

Na przyszłość, jeśli ktoś przychodzi patrząc, regex ma szczególny charakter dla spacji:

\s 

W żargonie JS (gdzie literały regex mogą być ujęte w ukośniki), jeśli szukasz 20 przestrzenie (nie karty, linia pasze, etc.) można to zrobić:

/ {20}/ 

będziesz także chcą pamiętać, że wiele silników regex przeglądarka nie uznają non-breaking space być spacji. Reprezentacja Unicode postać NBSP jest:

\u00A0 

łącznie, patrząc na każdym połączeniu 20 postaci białych (m.in. karty, etc.) lub NBSPs rzędu (nawiasy kwadratowe oznaczają „klasę postaci”):

/[\s\u00A0]{20}/ 

EDIT: Włączenie Thomasa punkt o nbsp. Daj mu swój komentarz i/lub odpowiedz na głos w górę, jeśli chcesz - wiem, że mam.

+1

można tak myśleć, ale w rzeczywistości jest to po prostu złe dla zbyt wielu przeglądarek. – citykid

+1

Genialny! Punkt kodu unicode dla NBSP jest dokładnie tym, czego szukałem. Jest to przydatne do łamania łańcucha w słowa: 'sentence.split (/ [\ s \ u00A0] + /)'. – thure

0

Dla IE (testowałem w IE7), \s nie pasuje do &nbsp;, ale Chrome i Firefox to robią. Więc jeśli chcesz wyeliminować białe spacje, ale nie &nbsp; (bez przerwy), nie używaj \s, ponieważ nie jest to bezpieczne dla przeglądarki.

Na przykład, chcesz, aby wyeliminować wszystkie spacji tym \ n \ t, ale nie &nbsp; można użyć \n \t i białą przestrzeń, to jest: str.replace(/[\t \n]+/g, "")

Powiązane problemy