正则表达式范围不得从零开始

时间:2015-07-23 10:47:00

标签: c# asp.net .net regex asp.net-mvc

我正在尝试编写一个正则表达式,其中只允许从1到99的值。

有效值:

1
01
2
02
3
03
...
19
20
21
...
98
99

其他所有内容都必须抛出错误:

00
0
-1
1.0
1.
100

我目前有这个:

^[1-9]([0-9]+$)

这不起作用。它只接受10及以上的值。

5 个答案:

答案 0 :(得分:4)

这应该做:

^(0[1-9]|[1-9][0-9]?)$

答案 1 :(得分:2)

^(0?[1-9]|[1-9][0-9])$

第一部分涵盖1到9和0x

第二部分适用于10到99之间的所有内容

答案 2 :(得分:0)

这项工作:^(([0-9][1-9])|([1-9][0-9])|[1-9])$

答案 3 :(得分:0)

试试这个正则表达式:

^([1-9]|[1-9][0-9]|0[1-9])$/mg

在这里演示Regex101

它使用等同于|的{​​{1}}运算符。

基本上这个正则表达式说:

  

1到9之间的数字是多少?

     

OR

     

第一个数字是介于1和9之间,第二个数字介于0之间   和9?

     

OR

     

数字是否以0开头并以1到9之间的数字结尾?

结尾OR上的标记只是让它检查演示的每一行,您可能想要更改或删除它们。

编辑:无论出于何种原因,我都没有看到Kuba的回答。他实际上更干净,但是如果你想要解释的话,其工作方式大致相同。

答案 4 :(得分:0)

/^(0?[1-9]|[1-9][0-9])$/gm

Demo here