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.
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
}
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 *
.
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
}
Eh bien, si vous utilisez jQuery, c'est plus simple.
if ($.trim(val).length === 0){
// string is invalid
}
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");
}
if (!myString.replace(/^\s+|\s+$/g,""))
alert('string is only whitespace');
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
}
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;