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 }