如何在 case 语句中匹配美国 phone 数字模式
How to match a US phone number pattern in a case statement
所以我只想特别匹配该格式:xxxxxxxxxx
目前我有:
case $num in
[0-9]{10}) echo "$num" ;;
*) echo "no num" ;;
esac
但不幸的是,它不起作用,我根本找不到原因。
这种模式匹配有什么问题?
谢谢
它不起作用,因为 case
支持 glob 模式匹配并且 [0-9]{10}
是正则表达式。
您需要在 if
中使用 =~
运算符才能使用正则表达式:
if [[ $num =~ ^[0-9]{10}$ ]]; then
echo "$num"
else
echo "no num"
fi
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
所以我只想特别匹配该格式:xxxxxxxxxx
目前我有:
case $num in
[0-9]{10}) echo "$num" ;;
*) echo "no num" ;;
esac
但不幸的是,它不起作用,我根本找不到原因。 这种模式匹配有什么问题?
谢谢
它不起作用,因为 case
支持 glob 模式匹配并且 [0-9]{10}
是正则表达式。
您需要在 if
中使用 =~
运算符才能使用正则表达式:
if [[ $num =~ ^[0-9]{10}$ ]]; then
echo "$num"
else
echo "no num"
fi
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