数值范围的正则表达式,显示1和01,但拒绝0和00

时间:2016-01-27 15:20:02

标签: regex

我很困惑,但无法弄清楚为什么我的正则表达式不起作用。 这是一个输入应该接受0到40之间的数字范围。它应该拒绝0和00,但接受1或01并进一步......

我哪里错了?

\b([1-3]?\d{1}|40)\b

1 个答案:

答案 0 :(得分:2)

[1-3]?\d{1}

匹配0,因为[1-3]是可选的,\d当然包含0。此外,{1}是无操作 - 根据定义,每个令牌都匹配一次。

你需要这样的东西:

\b(0?[1-9]|[1-3]\d|40)\b