Jaki jest najlepszy sposób sprawdzenia, czy ciąg zawiera tylko spacje?Jak mogę sprawdzić, czy ciąg znaków zawiera znaki i spacje, a nie tylko białe spacje?
Łańcuch może zawierać znaków połączone z białymi znakami, ale nie tylko spacje.
Jaki jest najlepszy sposób sprawdzenia, czy ciąg zawiera tylko spacje?Jak mogę sprawdzić, czy ciąg znaków zawiera znaki i spacje, a nie tylko białe spacje?
Łańcuch może zawierać znaków połączone z białymi znakami, ale nie tylko spacje.
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
}
Wystarczy sprawdzić ciąg przeciwko tej regex:
if(mystring.match(/^\s+$/) === null) {
alert("String is good");
} else {
alert("String contains only whitespace");
}
To tylko sprawdzić, czy ciąg zawiera * * tylko białe znaki, ale nie jeśli zawiera * wszystkie * odstępy, jak został poproszony. – stakx
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. –
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 *
.
ukradł moją odpowiedź. +1 – Triptych
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. –
if (!myString.replace(/^\s+|\s+$/g,""))
alert('string is only whitespace');
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
}
Cóż, jeśli używasz jQuery, jest to prostsze.
if ($.trim(val).length === 0){
// string is invalid
}
Szybciej czy po prostu prościej? – 2rs2ts
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
nie działa, gdy val ma przypisane spacje, w moim przypadku cztery spacje. – user1451111
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
}
+1 To jest lepsza odpowiedź niż moja, choć może nie tak jasne, kiedy wrócisz miesiąc później! –
Oto, jakie są komentarze :) – AntonioCS
Po prostu uważaj, aby wartość myString była pusta. Zwróci true: /\S/.test(null) == true –