正则表达式。匹配1到365之间的任何数字

时间:2009-05-20 07:19:41

标签: asp.net regex validation

我们正在使用RegEx Validator验证文本框中的输入。

当前的RegEx表达式检查当前数字是否介于1 - 999之间。

我们刚刚继承了这段代码,我们需要将范围从999更改为365.简而言之,我们需要编写一个正则表达式来检查输入是否介于1 - 365之间。

当然,我们可以使用RangeValidator或自定义验证器。但我们不想这样做,因为我们不想引入“重大”变化。

谢谢!

编辑:

我们还应该抓住以下模式: 001为1 019表示19

4 个答案:

答案 0 :(得分:12)

使用正则表达式肯定不是验证整数范围的最佳方法,但是在这里:

 ^([1-9][0-9]?|[12][0-9][0-9]|3[0-5][0-9]|36[0-5])$

[1-9][0-9]?     matches    1 -  99
[12][0-9][0-9]  matches  100 - 299
3[0-5][0-9]     matches  300 - 359
36[0-5]         matches  360 - 365

编辑:使用前导零(也匹配00000000321等字符串):

 ^0*([1-9][0-9]?|[12][0-9][0-9]|3[0-5][0-9]|36[0-5])$

答案 1 :(得分:5)

注意差距,嗯闰年。 : - )

答案 2 :(得分:2)

你真的不想使用正则表达式,你应该只使用/ ^ \ d {1,3} $ /并将数字验证为1..365

至于正则表达式:

SNIP
费迪南德很好:)

答案 3 :(得分:1)

Ferdinand用于捕捉领先零的正则表达式的一点点补充:

^([0]{0,2}[1-9]|[0]?[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-5])$

[0]{0,2}[1-9]  - catches 001, 01, 1...
[0]?[1-9][0-9] - catches 010, 10...

注意,它没有捕获0234或0019