Bash 测试字符串是否只包含空格和非字母数字字符
我尝试了以下解决方案Bash 测试字符串是否只包含空格和非字母数字字符,bash,Bash,我尝试了以下解决方案 if !(($str =~ ^.*[a-zA-Z0-9].*$)); then continue; fi 语法似乎有问题。您的正则表达式和语法都不正确。您根本不需要使用regex,只需要glob即可: checkStr() { [[ $1 != *[a-zA-Z0-9]* ]] } 如果在输入中找到一个字母数字,则返回false。否则将返回true 测试它: $> if checkStr 'abc'; then echo "true case" e
if !(($str =~ ^.*[a-zA-Z0-9].*$)); then
continue;
fi
语法似乎有问题。您的正则表达式和语法都不正确。您根本不需要使用regex,只需要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
您可以使用character类。我用^
否定:
if [[ "${str}" =~ ^[^[:alnum:]]$ ]] ; then
echo "yes"
fi
如果字符串匹配零个或多个空格和零个或多个非字母数字字符,我需要返回True的表达式。如果至少有一个字母数字字符,则应返回False。那是因为我找到了相反的结果,然后用@xralf
=这里的code>操作符就是这样做的,除非你脑子里有一组特定的非字母数字字符。@anubhava你提供的例子正是我所想的。