我正在尝试检查任何大写字母的字符串.我的代码显示任何输入没有UPPER,可能是“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] ]]
如果密码包含任何大写字母,则为true.
例如,您应该在运行此类测试之前设置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:]]应该始终有效.