web-dev-qa-db-fra.com

Comment puis-je vérifier si la chaîne contient des caractères et des espaces, pas seulement des espaces?

Quel est le meilleur moyen de vérifier si une chaîne de caractères ne contient que des espaces?

La chaîne est autorisée à contenir des caractères combinés avec des espaces, mais pas seulement des espaces.

119
patad

Au lieu de vérifier toute la chaîne pour voir s'il n'y a que des espaces, vérifiez simplement s'il existe au moins un caractère de non espace:

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}
276
nickf
if (/^\s+$/.test(myString))
{
      //string contains only whitespace
}

cela vérifie 1 ou plusieurs caractères d'espacement, si vous voulez aussi faire correspondre une chaîne vide, remplacez + avec *.

32
Paul Creasey

Réponse la plus simple si votre navigateur prend en charge la fonction trim()

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

Eh bien, si vous utilisez jQuery, c'est plus simple.

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

Il suffit de vérifier la chaîne avec cette regex:

if(mystring.match(/^\s+$/) === null) {
    alert("String is good");
} else {
    alert("String contains only whitespace");
}
6
Ian Clelland
if (!myString.replace(/^\s+|\s+$/g,""))
  alert('string is only whitespace');
1
shady

L'expression régulière que j'ai finalement utilisée pour les espaces au milieu de ma chaîne, mais pas au début ni à la fin, était la suivante:

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

ou

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

Donc, je sais que c'est une vieille question, mais vous pourriez faire quelque chose comme:

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

ou vous pouvez faire ce que nickf dit et utiliser:

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

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
}
0
Rajat Saxena

Cela peut être une solution rapide

return input < "\u0020" + 1;
0
9me