Regex pour pas vide et pas d'espaces
J'essaie de créer une expression rationnelle qui retournera false si le motif de chaîne contient des espaces ou est vide. Jusqu'à présent, j'ai ceci
[^s]
Je pense que cela va s'assurer que la chaîne ne contient pas d'espaces mais je ne sais pas comment vérifier aussi pour s'assurer qu'elle n'est pas vide. Toute aide serait appréciée.
5 réponses
La plupart des moteurs d'expression régulière prennent en charge les séquences d'échappement" counter part". C'est, pour \s
(espace blanc) il y a sa contre-partie \S
(non-blanc).
En utilisant ceci, vous pouvez vérifier, s'il y a au moins un caractère non-espace blanc avec ^\S+$
.
PCRE pour PHP a plusieurs de ces séquences d'échappement.
À ma connaissance, vous voulez faire correspondre une chaîne non vide et non vide, donc la réponse supérieure fait le contraire. Je suggère:
(.|\s)*\S(.|\s)*
- correspond à toute chaîne contenant au moins un caractère non-espace (le \S
au milieu). Il peut être précédé et suivi de n'importe quoi, n'importe quelle séquence de caractères ou d'espaces (y compris les nouvelles lignes) - (.|\s)*
.
, Vous pouvez l'essayer avec des explications sur https://regex101.com/.
J'ai fini par utiliser quelque chose de similaire à la réponse acceptée, avec des modifications mineures
(^$)|(\s+$)
Explication par la Expresso
Select from 2 alternatives (^$) [1] A numbered captured group ^$ Beginning of line ^ End of line $ [2] A numbered captured group (\s+$) Whitespace, one or more repetitions \s+ End of line $
/^[\s]*$/
correspond uniquement aux chaînes vides et aux chaînes contenant des espaces