J'essaye de vérifier si une chaîne a un espace blanc . J'ai trouvé cette fonction mais elle ne semble pas fonctionner:
function hasWhiteSpace(s)
{
var reWhiteSpace = new RegExp("/^\s+$/");
// Check for white space
if (reWhiteSpace.test(s)) {
//alert("Please Check Your Fields For Spaces");
return false;
}
return true;
}
Au fait, j'ai ajouté des citations à RegExp
.
Y a-t-il quelque chose qui ne va pas? Y a-t-il quelque chose de mieux que je puisse utiliser? Espérons que JQuery.
javascript
whitespace
Abdos
la source
la source
Réponses:
Vous pouvez simplement utiliser la méthode indexOf sur la chaîne d'entrée:
Ou vous pouvez utiliser la méthode de test, sur un simple RegEx:
Cela vérifiera également les autres caractères d'espace blanc comme Tab.
la source
Votre regex ne correspondra à rien, tel quel. Vous devez absolument supprimer les guillemets - le
"/"
caractères sont suffisants./^\s+$/
vérifie si la chaîne est TOUS les espaces:^
correspond au début de la chaîne.\s+
signifie au moins 1, éventuellement plus, espaces.$
correspond à la fin de la chaîne.Essayez de remplacer l'expression régulière par
/\s/
(et sans guillemets)la source
Cette fonction vérifie les autres types d'espaces, pas seulement les espaces (tabulation, retour chariot, etc.)
Si vous ne souhaitez pas utiliser Lodash , voici une
some
implémentation simple avec 2s
:Ensuite, remplacez-le simplement
some
parssome
.Pour ceux de Node, utilisez:
la source
Voici ma suggestion de validation:
la source
Une approche simple que vous pourriez adopter est de comparer la longueur de la chaîne d'origine avec celle de la chaîne pour remplacer les espaces par rien. Par exemple:
la source
Avec des ajouts à la langue, c'est beaucoup plus facile et vous pouvez profiter du retour anticipé:
Je n'ai pas exécuté de benchmark de performances, mais ceux-ci devraient être plus rapides que les expressions régulières, mais pour les petits extraits de texte, il n'y aura pas beaucoup de différence de toute façon.
la source
Quelques autres ont publié des réponses. Il y a des problèmes évidents, comme le retour
false
lorsque le Regex passe, et les opérateurs^
et$
indiquent le début / la fin, alors que la question recherche a (n'importe quel) espace, et non: contient uniquement des espaces (que l'expression régulière vérifie).En plus de cela, le problème n'est qu'une faute de frappe.
Change ça...
Pour ça...
Lorsque vous utilisez une expression régulière à l'intérieur
RegExp()
, vous devez faire les deux choses suivantes .../
crochets de début et de fin .\\s
à- dire à la place de\s
, etc.Démo de travail complète à partir du code source ....
la source