终端正则表达式语法

时间:2018-09-09 15:38:27

标签: regex bash macos

我正在尝试从用户那里测试一个字符串,以查看它是正整数还是十进制。我目前有:

if ! [[ "$varSize" =~ ^[0-9]+(?:$|\.[0-9]+) ]] then echo "SIZE CAN ONLY CONTAIN NUMBERS" fi

但是我遇到行错误,因此认为我的正则表达式格式有问题。 regex在regexr上可以正常工作,所以您猜它是不是很烂?

在此先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

这是正确的解决方案:

#!/bin/bash

varSize="12.a3"
echo $varSize
re='^[0-9]+([.][0-9]+)?$'

if [[ "${varSize}" =~ $re ]]
   then
       echo "SIZE CONTAINS NUMBERS only"
   else
       echo "SIZE is not a number"
fi

您可以玩这个小脚本来进一步调整它以适应您的需求。