10

我只需要知道如何制作一个接受最多 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

4 回答 4

9

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

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

或者正如无与伦比的@gniourf_gniourf 在他的评论中指出的那样,需要以下内容才能正确处理前导零的数字

[[ $number =~ ^[0-9]{,2}$ ]] && ((number=10#$number))
于 2013-11-08T16:51:04.543 回答
6

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

于 2013-11-08T16:48:11.133 回答
6
^([1-9]|[1-9]{1}[0-9]{1})$

匹配 1,2,3...99 中的每个数字

于 2013-11-08T16:51:56.050 回答
0
#!/bin/bash
if [ "$1" -gt 0 ] 2>/dev/null ;then 
    echo "$1 is number." 
else 
    echo 'no.' 
fi 
于 2018-12-30T00:38:04.917 回答