验证号码输入正则表达式

时间:2013-10-25 07:02:54

标签: regex bash shell

我正在编写一个正在检查

的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

有什么建议吗?提前谢谢

3 个答案:

答案 0 :(得分:1)

这个正则表达式适合你:

^[89][0-9]{7}$
  • 第一部分不需要范围,您只需使用[89]
  • 即可
  • BASH Shell的正则表达式引擎不支持\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