我一直在研究一个bash脚本,它将一个参数作为用户的输入。
我必须验证此输入是否(至少)有文件扩展名后缀[ex:'。com','.ca'等]并且在该后缀之前没有空名称。
我试图设置正则表达式验证并尝试设置正则表达式验证语句(其中$ 1是用户输入的内容):if [[ $1 =~ ^.+\.[A-z0-9]+$ ]]
。
我认为这个字符串能够匹配一个以至少1个字符开头的字符串,后跟一个文字点('。'),最后捕获至少一个字母或数字字符。
这是关于为任何好奇的人验证用户输入的完整代码。
domainName="";
if [ $# -eq 1 ]; then
if [[ $1 =~ ^.+\.[A-z0-9]+$ ]]; then
domainName=$1;
printf "The domain name is: \"%s\"\n" $domainName;
else
printf "The domain name needs at least a suffix (ex: '.com', '.ca', etc)\n";
fi
elif [ $# -le 0 ]; then
printf "You need to give me a domain name to set up!\n";
exit 1;
else
printf "You cannot have more than 1 domain set up at a time!\n";
exit 1;
fi
如果有人对正在发生的事情以及如何解决这个问题有任何想法,请分享您的知识:)
提前致谢!
答案 0 :(得分:0)
问题是A-z
在您的角色类[A-z0-9]
中,它与ASCII表中的A
和z
之间的更多字符相匹配,例如:[
,{{ 1}},\
等。
使用此:
]
甚至更好:
[[ $1 =~ ^.+\.[A-Za-z0-9]+$ ]]