我需要检查一个字符串,并确保它不包含给定字符列表之外的任何字符。
我编写了一个脚本对此进行了测试:
str="$1"
regex="^[0-9a-zA-Z\,\!\-\^\`@\{\}\[\],=\(\).;\/~_|]*$"
if [[ "$str" =~ $regex ]]
then
echo "f yeah"
else
echo "f you"
fi
但这似乎行不通。在我看来,我甚至还没有接近。
允许的字符列表为:
a-z A-Z 0-9 ` @ { } [ ] ^ , = ! ( ) . ; / ~ _ |
不知道我在这里想念的是什么。
您不能通过]
反斜杠将a包含在字符类中。它必须是该类中的第一个元素。破折号也一样,但这次必须走到最后。\-\^
恰好匹配从\
到的范围\
,即反斜线和插入符号。(我也删除了无用的反斜杠)。
regex='^[]0-9a-zA-Z,!^`@{}=().;/~_|[-]*$'
你确定你想*
,不是+
?您真的要接受空字符串吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句