Réponses:
Au lieu de vérifier toute la chaîne pour voir s'il n'y a que des espaces, vérifiez simplement s'il y a au moins un caractère sans espace:
if (/\S/.test(myString)) {
// string is not empty and not just whitespace
}
Réponse la plus simple si votre navigateur prend en charge la trim()
fonction
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
}
ceci vérifie 1 ou plusieurs caractères d'espacement, si vous le remplacez également par une chaîne vide, remplacez-le +
par *
.
Eh bien, si vous utilisez jQuery, c'est plus simple.
if ($.trim(val).length === 0){
// string is invalid
}
Vérifiez simplement la chaîne par rapport à cette expression régulière:
if(mystring.match(/^\s+$/) === null) {
alert("String is good");
} else {
alert("String contains only whitespace");
}
L'expression régulière que j'ai fini par utiliser lorsque je souhaite autoriser des espaces au milieu de ma chaîne, mais pas au début ou à la fin, était la suivante:
[\S]+(\s[\S]+)*
ou
^[\S]+(\s[\S]+)*$
Donc, je sais que c'est une vieille question, mais vous pouvez faire quelque chose comme:
if (/^\s+$/.test(myString)) {
//string contains characters and white spaces
}
ou vous pouvez faire ce que nickf a dit et utiliser:
if (/\S/.test(myString)) {
// string is not empty and not just whitespace
}
J'ai utilisé la méthode suivante pour détecter si une chaîne ne contient que des espaces. Il correspond également aux chaînes vides.
if (/^\s*$/.test(myStr)) {
// the string contains only whitespace
}
Cela peut être une solution rapide
return input < "\u0020" + 1;
return input < " 1";
ce qui est juste faire une comparaison alphabétique. Tant que l'entrée est triée inférieure à "1", elle retournera true. Exemple: return " asdfv34562345" < "\u0020" + 1;
évalue à vrai.