正则表达式为0或正数

时间:2015-06-19 17:00:24

标签: c# regex

我需要一个正则表达式来检查一个字符串的值是' 0'还是一个长度等于1到10的正数(也就是第一个数字不能是零)。

我被卡住了,我可以得到0,但我无法获得正数。

这就是我所拥有的:

(^([0])$)|(^([1-9][0-9]{0-9})$)

这个reg exp看起来有点疯狂,我一直在尝试很多不同的东西,让它变得更加疯狂和疯狂。

2 个答案:

答案 0 :(得分:7)

对于一系列可能性,您使用逗号,而不是连字符。

(^([0])$)|(^([1-9][0-9]{0,9})$)

但是,您的正则表达式可以缩短为:

^(0|[1-9][0-9]{0,9})$

答案 1 :(得分:2)

提供更快,非正则表达式的方法:

static void Main(string[] args
{
     string str = "12";

     long test;
     if(str.Length <= 10 
         && long.TryParse(str, out test)
         && test >= 0)
     {
        //valid   
     }
}