我正在尝试检查字符串中是否存在任何大写字母。我的代码显示任何输入都没有上限,可能是“sss”、“Sss”、“SSS”
if [[ "$pass" =~ [^a-zA-Z0-9] ]]
then
echo "Upper found"
else
echo "no upper"
fi
最佳答案
[^a-zA-Z0-9]
表示除了 a-z
,即小写字母,A-Z
,即大写字母,和 0-9
,即数字。 sss
、Sss
、SSS
都只包含字母,因此无法匹配。
[[ $password =~ [A-Z] ]]
如果密码包含任何大写字母则为真。
你应该在运行这种测试之前设置LC_ALL
,例如
$ LC_ALL=cs_CZ.UTF-8 bash -c '[[ č =~ [A-Z] ]] && echo match'
match
$ LC_ALL=C bash -c '[[ č =~ [A-Z] ]] && echo match'
# exit-code: 1
[[:upper:]]
应该始终有效。
关于linux - Bash 脚本检查大写字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40294902/