我有以下功能
checkFormat()
{
local funcUserName=$1
if [[ "$funcUserName" != [a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9] ]];then
echo "1"
else
echo "0"
fi
}
if [[ $string != [a-zA-Z0-9]* ]]
如果第一个字符不是[a-zA-Z0-9],则仅返回true if [[$ string!= [a-zA-Z0-9] {5}]]
永远不会返回true。
if [[ $string != [a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9] ]]
按我的意愿返回。 这是为什么?
代码是检查用户名是否长5个字符和字母数字,即 Joe12或12345但不是%$ 134。
bash版本4.2.37
答案 0 :(得分:3)
我建议更换
if [[ $string != [a-zA-Z0-9]{5} ]]
通过
if [[ ! $string =~ ^[a-zA-Z0-9]{5}*$ ]]
匹配正则表达式。