bash获得最多2位数的正则表达式

时间:2013-11-08 16:45:48

标签: regex bash digit

我只需要知道如何制作一个接受最多2位数字的正则表达式

我现在所拥有的只是

^[0-9]{2}$

哪个匹配一个只有2位数的数字,但我不知道如何指定“匹配最多2位数的数字”。

另外,如果有办法确保这个数字不是0那么这将是一个加号,否则我可以用Bash检查。

谢谢! :)

请注意,输入变量来自read -p“make a choice”Number

编辑我的帖子 - 在背景中显示代码:

while true; do
    read -p "Please key in the number of the engineer of your choice, or leave empty to select them all: " Engineer
    if [ -z "$Engineer" ]; then
        echo "No particular user specified, all engineers will be selected."
        UserIdSqlString="Transactions.Creator!=0 "
        break
    else
        if [[ $Engineer =~ ^[0-9]{1,2}$ && $Engineer -ne 0 ]]; then
            echo "If you want a specific engineer type their number otherwise leave blank"  
        else
            echo "yes"
            break
        fi
    fi
done

4 个答案:

答案 0 :(得分:8)

bash [[条件表达式支持扩展正则表达式。

[[ $number =~ ^[0-9]{,2}$ && $number -ne 0 ]]

或者作为无法模仿的@gniourf_gniourf在他的评论中指出,需要以下方法才能正确处理带有前导零的数字

[[ $number =~ ^[0-9]{,2}$ ]] && ((number=10#$number))

答案 1 :(得分:5)

-_-一直在寻找这个20分钟,我发布这个后就找到了答案...... ^ [0-9] {1,2} $

答案 2 :(得分:5)

^([1-9]|[1-9]{1}[0-9]{1})$

匹配1,2,3 ... 99

中的每个数字

答案 3 :(得分:0)

#!/bin/bash
if [ "$1" -gt 0 ] 2>/dev/null ;then 
    echo "$1 is number." 
else 
    echo 'no.' 
fi