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.