测试字符串是否仅包含空格和非字母数字字符

时间:2016-09-20 14:23:10

标签: bash

我尝试了以下解决方案。

if !(($str =~ ^.*[a-zA-Z0-9].*$)); then
  continue;
fi

语法似乎有问题。

2 个答案:

答案 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