web-dev-qa-db-fra.com

Regex pour ne pas vider et non les espaces

J'essaie de créer une expression rationnelle qui renverra false si le modèle String contient des espaces ou est vide. Jusqu'ici j'ai cette

[^\s] 

Je pense que cela garantira que la chaîne ne contient pas d'espaces, mais je ne sais pas comment vérifier également pour s'assurer qu'il n'est pas vide. Toute aide serait appréciée.

27
medium

/^$|\s+/ si cela correspond, il y a un espace ou son vide.

37
Jan.

La plupart des moteurs d'expression régulière prennent en charge les séquences d'échappement "en tant que partie". C'est-à-dire que, pour \s (espace-blanc), il y a son compteur \S (espace non-blanc).

En utilisant ceci, vous pouvez vérifier s’il existe au moins un caractère autre qu’un espace avec ^\S+$.

PCRE pour PHP a plusieurs de ces séquences d'échappement .

14
Linus Kleen

Si je comprends bien, vous voulez faire correspondre une chaîne non vide et non vide, la réponse principale consiste donc à faire le contraire. Je suggère:

(.|\s)*\S(.|\s)*

- cela correspond à toute chaîne contenant au moins un caractère non blanc (le \S au milieu). Il peut être précédé et suivi par 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 l'explication sur https://regex101.com/ .

11
Tony

J'ai fini par utiliser quelque chose de similaire à la réponse acceptée, avec des modifications mineures

(^$)|(\s+$)

Explication par le Expresso

 Choisissez parmi 2 alternatives (^ $) 
 [1] Un groupe capturé numéroté ^ $ 
 Début de ligne ^ 
 Fin de ligne $ 
 [2] Un groupe capturé numéroté (\ s + $) 
 Espace blanc, une ou plusieurs répétitions\s + 
 Fin de ligne $ 
5
oleksii

Un peu tard, mais voici une expression rationnelle que j'ai trouvée et qui renvoie 0 correspondance pour les espaces vides ou les blancs:

/^(?!\s*$).+/

Vous pouvez le tester sur regex101

1
Truchainz