shell实例浅谈之检测用户输入串的合法性
2015-01-04 22:17
316 查看
一、问题
要求用户输入的串由大小写字母、数字组成,无标点、特殊符号和空格。
二、详解
1、替换法
将输入的串中非字母数字的内容删除或替换成空后,若与原来输入的相同则合法,否则不合法。[cpp]
view plaincopy
#!/bin/bash
isValidAlphaNumber()
{
result="$(echo $1 | sed 's/[^[:alnum:]]//g')" #替换非字母数字为空格
#$()等价``,因此上句等价于result=`echo $1 | sed 's/[^[:alnum:]]//g'`
#[:alnum:]等价于0-9A-Za-z中的一个字符,[[:alnum:]]是字母数字集,而[^[:alnum:]]表示除了所有字母数字外的任一字符
if [ "$result" != "$1" ]
then
return 1 #novalid
else
return 0 #valid
fi
}
###########代码执行起始位置###############
echo -n "Enter input:" #强制不换行
read input #读取输入
echo $input
if ! isValidAlphaNumber2 "$input" #调用函数
then
echo "invalide"
exit 1
else
echo "valide"
fi
exit 0
该方法为常用方法,判断字符串是否为数字也是采用替换法。
[cpp]
view plaincopy
strIsNumber()
{
if [ -n "$1" ]; then
STR_TEMP=`echo "$1" | sed 's/[0-9]//g'`
if [ -z "$STR_TEMP" ]; then
return 0
fi
fi
return 1
}
2、顺序判断法
依次顺序比较字符串的每一个字符,效率比上述低一些。[cpp]
view plaincopy
#!/bin/bash
isValidAlphaNumber()
{
tempstr=$1
for((i=1; i<=${#tempstr}; i++))
do
if [[ `echo $tempstr | cut -c$i` != [a-zA-Z0-9] ]]
#cut -c依次取字符,[[ ]]支持字符串的模式匹配
then
return 1
fi
done
return 0
}
###########代码执行起始位置###############
echo -n "Enter input:" #强制不换行
read input #读取输入
echo $input
if ! isValidAlphaNumber "$input" #调用函数
then
echo "invalide"
exit 1
else
echo "valide"
fi
exit 0
相关文章推荐
- shell实例浅谈之七检测用户输入串的合法性
- shell实例浅谈之十检测整数、浮点数和日期数的合法性
- shell实例浅谈之检测整数、浮点数和日期数的合法性
- 验证用户输入的参数合法性的shell脚本
- 验证用户输入的参数合法性的shell脚本
- 实例详解用户输入 i. 检测常用手势
- C#结合正则表达式判断各种用户输入合法性
- unity3D rigidibody / collision /检测用户输入
- Shell实现等待用户输入并设定缺省执行
- 提示用户输入一个用户名,判断是否存在,如果存在显示该用户的shell
- 使用动态编译验证用户输入合法性
- Shell读取用户输入
- shell 获取用户输入
- 综合的判断用户输入的合法性的函数
- 文本框输入内容合法性检测
- shell实例 ----判断输入的用户名是否存在与/etc/passwd中
- SHELL脚本的基础知识4——处理用户输入
- Visual C# 2008+SQL Server 2005 数据库与网络开发--8.2.4 校验用户输入数据的合法性
- 检测用户输入密码强度的效果代码
- 利用shell脚本提高效率(切换用户不需要输入密码)