如何在案例陈述中匹配美国电话号码模式

时间:2015-12-13 13:30:06

标签: bash switch-statement

所以我只想特别匹配这种格式:xxxxxxxxxx

目前我有:

case $num in
 [0-9]{10}) echo "$num"   ;;
         *) echo "no num" ;;
esac

但不幸的是,它不起作用,我根本找不到原因。 这种模式匹配有什么问题?

由于

2 个答案:

答案 0 :(得分:2)

它不起作用,因为case支持glob模式匹配,[0-9]{10}是正则表达式。

您需要在=~中使用if运算符才能使用正则表达式:

if [[ $num =~ ^[0-9]{10}$ ]]; then
   echo "$num"
else
   echo "no num"
fi

答案 1 :(得分:0)

num=1234567890

case $num in
  [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]) echo "$num" ;;
  *) echo "no num" ;;
esac

输出:

1234567890