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

Quelle est la meilleure façon de vérifier si une chaîne contient uniquement des espaces blancs?

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

Au lieu de vérifier la chaîne entière pour voir si il n'y a que des espaces, vérifiez s'il y a au moins un caractère de non- blancs:

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

Cela vérifie pour 1 ou plusieurs caractères d'espace blanc, si vous le faites également pour correspondre une chaîne vide, puis remplacez + par * .

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 contre cette regex:

 if(mystring.match(/^\s+$/) === null) { alert("String is good"); } else { alert("String contains only whitespace"); } 

La 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 } 
 if (!myString.replace(/^\s+|\s+$/g,"")) alert('string is only whitespace'); 

L'expression régulière que j'ai fini par utiliser pour quand je veux permettre 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]+)*$ 

Alors, 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 a dit et utiliser:

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