2010-01-08 24 views

Odpowiedz

225

Zamiast sprawdzać cały ciąg, aby zobaczyć, czy jest tylko białe znaki, po prostu sprawdzić, czy istnieje co najmniej jeden znak non spacji:

if (/\S/.test(myString)) { 
    // string is not empty and not just whitespace 
} 
+8

+1 To jest lepsza odpowiedź niż moja, choć może nie tak jasne, kiedy wrócisz miesiąc później! –

+8

Oto, jakie są komentarze :) – AntonioCS

+2

Po prostu uważaj, aby wartość myString była pusta. Zwróci true: /\S/.test(null) == true –

6

Wystarczy sprawdzić ciąg przeciwko tej regex:

if(mystring.match(/^\s+$/) === null) { 
    alert("String is good"); 
} else { 
    alert("String contains only whitespace"); 
} 
+0

To tylko sprawdzić, czy ciąg zawiera * * tylko białe znaki, ale nie jeśli zawiera * wszystkie * odstępy, jak został poproszony. – stakx

+1

Sposób, w jaki czytam pytanie, mówi, że/any/whitespace jest dozwolone, o ile ciąg nie jest/tylko/spacja. Milczy, co zrobić, jeśli ciąg jest pusty, więc może być tak, że odpowiedź nicka jest jeszcze lepsza. –

26
if (/^\s+$/.test(myString)) 
{ 
     //string contains only whitespace 
} 

Sprawdza dla 1 lub więcej znaków białych, jeśli go również dopasować pusty ciąg następnie zastąpić + z *.

+0

ukradł moją odpowiedź. +1 – Triptych

+0

Podoba mi się ta odpowiedź, ponieważ testuje to, co chcemy przetestować, i nie przekazujemy wszystkiego. Takie warunki mieszczą się w środku, jeśli masz już inny system operacyjny. –

1
if (!myString.replace(/^\s+|\s+$/g,"")) 
    alert('string is only whitespace'); 
0

Wyrażenie regularne skończyło się używając do kiedy chcę, aby umożliwić przestrzenie w środku mojego ciąg, ale nie na początku lub na końcu było to:

[\S]+(\s[\S]+)* 

lub

^[\S]+(\s[\S]+)*$ 

Tak, wiem, że jest to stara sprawa, ale można zrobić coś takiego:

if (/^\s+$/.test(myString)) { 
    //string contains characters and white spaces 
} 

czy można zrobić to, co nickf powiedział i zastosowanie:

if (/\S/.test(myString)) { 
    // string is not empty and not just whitespace 
} 
16

Cóż, jeśli używasz jQuery, jest to prostsze.

if ($.trim(val).length === 0){ 
    // string is invalid 
} 
+2

Szybciej czy po prostu prościej? – 2rs2ts

+1

Działa również dla znaków nowej linii i tabulacji, podczas gdy powyższe przykłady wyrażeń regularnych nie są takie, ponieważ szukają tylko nieobecności niczego poza białą przestrzenią. Chociaż jestem pewien, że ktoś z pewną wiedzą na temat regex mógłby stworzyć wyrażenie regularne, które zawierałoby również tab/newline w wyszukiwaniu. – Kate

+0

nie działa, gdy val ma przypisane spacje, w moim przypadku cztery spacje. – user1451111

8

Najprostsza odpowiedź, czy Twoja przeglądarka obsługuje trim() funkcja

if (myString && !myString.trim()) { 
    //First condition to check if string is not empty 
    //Second condition checks if string contains just whitespace 
} 
Powiązane problemy