我正在编写一个正在检查
的shell脚本程序的正则表达式1)数字应为8位
2)第一个数字必须从8或9开始
下面是我所拥有的,但正则表达式似乎没有发生任何事情
startWithEightOrNineDigitRegex="/^[8-9]/d{8}"
echo "Enter a 8 digit number"
read eightDightNumber
if [[ $eightDightNumber =~ $startWithEightOrNineDigitRegex ]]; then
echo "Number must start with 8 or 9"
elif [[ $eightDigitNumber -lt 8 ]]
echo "Number must be in 8 digits "
else
echo $eightDightNumber
fi
有什么建议吗?提前谢谢
答案 0 :(得分:1)
这个正则表达式适合你:
^[89][0-9]{7}$
[89]
\d
因此您需要使用字符类[0-9]
答案 1 :(得分:0)
也许你正在寻找:
^[89]\d{7}
你的正则表达式的逻辑就是上面那个,解决方案是:
^[89][[:digit:]]{7}
答案 2 :(得分:0)
将正则表达式更改为'^[89][0-9]{7}$'
。
除此之外,如果声明正文应该调整。
startWithEightOrNineDigitRegex='^[89][0-9]{7}$'
echo "Enter a 8 digit number"
read eightDightNumber
if [[ "$eightDightNumber" =~ $startWithEightOrNineDigitRegex ]] ; then
echo $eightDightNumber
else
echo "Number must start with 8 or 9 and should be in 8 digits"
fi
或否定表达:
startWithEightOrNineDigitRegex='^[89][0-9]{7}$'
echo "Enter a 8 digit number"
read eightDightNumber
if [[ ! "$eightDightNumber" =~ $startWithEightOrNineDigitRegex ]] ; then
echo "Number must start with 8 or 9 and should be in 8 digits"
else
echo $eightDightNumber
fi