Script Bash vérifier la chaîne de lettre majuscule
Je suis en train de vérifier une chaîne pour toute lettre Majuscule. mon code ne montre PAS de SUPÉRIEUR pour une entrée, peut-il être "sss", "Sss", "SSS"
if [[ "$pass" =~ [^a-zA-Z0-9] ]]
then
echo "Upper found"
else
echo "no upper"
fi
- Qu'est-ce que vous pensez que des correspondances regex? Pourquoi avez-vous des lettres minuscules
a-z
et chiffres0-9
- t-il? - Oh mon dieu ffs. Ne pas s'en rendre compte. Merci!!!!
Vous devez vous connecter pour publier un commentaire.
[^a-zA-Z0-9]
signifie rien, sauf poura-z
, c'est à dire des lettres minuscules, desA-Z
, c'est à dire les lettres majuscules, et0-9
, c'est à dire les chiffres.sss
,Sss
,SSS
tous les contenir seulement des lettres, de sorte qu'ils ne peuvent pas égaler.est vrai si le mot de passe contient des lettres majuscules.
Vous devez définir
LC_ALL
avant de lancer ce genre de tests, comme par exemple[[:upper:]]
devrait fonctionner toujours.Votre regex est faux. Utilisez [A-Z] ou [:upper:].
https://en.wikipedia.org/wiki/Regular_expression
[:upper:]
et toutes les autres semblables représentent des classes, pour correspondre, vous avez besoin d'une couche supplémentaire de support au-dessus d'eux. donc[A-Z]
est équivalent à[[:upper:]]
locale
.