我尝试了以下解决方案。
if !(($str =~ ^.*[a-zA-Z0-9].*$)); then
continue;
fi
语法似乎有问题。
答案 0 :(得分:2)
您的正则表达式和语法都不正确。你根本不需要使用正则表达式,只需要使用glob:
checkStr() {
[[ $1 != *[a-zA-Z0-9]* ]]
}
如果在输入中找到一个字母数字,则返回false
。否则返回true
。
测试一下:
$> if checkStr 'abc'; then
echo "true case"
else
echo "false case"
fi
false case
$> if checkStr '=:() '; then
echo "true case"
else
echo "false case"
fi
true case
$> if checkStr '=:(x) '; then
echo "true case"
else
echo "false case"
fi
false case
答案 1 :(得分:1)
您可以使用[:alnum:]
字符类。我否定使用^
:
if [[ "${str}" =~ ^[^[:alnum:]]$ ]] ; then
echo "yes"
fi