Jaki jest najlepszy sposób sprawdzenia, czy ciąg zawiera tylko białe znaki?
Łańcuch może zawierać znaki połączone ze spacjami , ale nie tylko białe znaki.
Odpowiedzi:
Zamiast sprawdzać cały ciąg, aby zobaczyć, czy jest tylko biała spacja, po prostu sprawdź, czy jest co najmniej jeden znak niebędący białą spacją:
if (/\S/.test(myString)) {
// string is not empty and not just whitespace
}
Najprostsza odpowiedź, jeśli Twoja przeglądarka obsługuje tę trim()
funkcję
if (myString && !myString.trim()) {
//First condition to check if string is not empty
//Second condition checks if string contains just whitespace
}
if (/^\s+$/.test(myString))
{
//string contains only whitespace
}
ten sprawdza 1 lub więcej białych znaków, jeśli ją również dopasować pusty ciąg następnie zastąpić +
z *
.
Cóż, jeśli używasz jQuery, jest to prostsze.
if ($.trim(val).length === 0){
// string is invalid
}
Po prostu porównaj ciąg z tym wyrażeniem regularnym:
if(mystring.match(/^\s+$/) === null) {
alert("String is good");
} else {
alert("String contains only whitespace");
}
Wyrażenie regularne, którego użyłem, gdy chcę zezwolić na spacje w środku ciągu, ale nie na początku ani na końcu, było takie:
[\S]+(\s[\S]+)*
lub
^[\S]+(\s[\S]+)*$
Więc wiem, że to stare pytanie, ale możesz zrobić coś takiego:
if (/^\s+$/.test(myString)) {
//string contains characters and white spaces
}
lub możesz zrobić to, co powiedział nickf i użyć:
if (/\S/.test(myString)) {
// string is not empty and not just whitespace
}
Użyłem następującej metody, aby wykryć, czy ciąg zawiera tylko białe znaki. Dopasowuje również puste ciągi.
if (/^\s*$/.test(myStr)) {
// the string contains only whitespace
}
To może być szybkie rozwiązanie
return input < "\u0020" + 1;
return input < " 1";
które jest po prostu porównywaniem alfabetycznym. Dopóki dane wejściowe są posortowane poniżej „1”, zwraca wartość „prawda”. Przykład: return " asdfv34562345" < "\u0020" + 1;
zwraca wartość true.