正则表达式数字范围或只是一个数字

时间:2012-07-31 18:02:55

标签: c# asp.net regex

我有一个文本框请求有一系列值我正在使用模式^(\d{1,3})\-(\d{1,3})$,这似乎有效。

添加现在他们想要: 由0 to 20限制的正2位数字 正2位数范围(01-20 or 1-3 or 1-03 or 01-4 and so on)

我正在使用^\d{2}([\-]\d{2})?$,但我不知道如何施加0到20的限制

使用C#ASP.Net RegularExpressionValidator。

提前致谢

3 个答案:

答案 0 :(得分:2)

pattern1 ^(20|[10]?\d)$可以匹配0-20

pattern2 ^(20|[10]?\d)(?:-(20|[10]?\d))?$可以匹配“0-20”,“1-20”,“2-20”......“20-20”或0到20

但坏消息是pattern2会匹配像“5-1”,“20-3”

这样的字符串

对于这个问题,银弹不存在,你需要编写一些代码来检查范围(从组1和组2中获取字符串,将它们转换为整数进行比较)。

答案 1 :(得分:0)

对于20的限制,你必须分别做数字。确保它是20或第一个数字是0-1,第二个数字是0-9。

即。 20 | ([0-1]?[0-9])

编辑:所以整件事应该是^\d{2}([-](20 | ([0-1]?[0-9])))?$

答案 2 :(得分:0)

试试这个:([01]?\ d | 2 \ d)。

这可能会做你想要的。