C# 只接受数字2及以上的正则表达式

C# 只接受数字2及以上的正则表达式,c#,asp.net,regex,C#,Asp.net,Regex,我正在尝试创建一个只允许用户输入值为2或更多的数字的正则表达式(不允许0和1) 我已经尝试了很长一段时间,但没有成功。。。 我试过这个例子: [2-9]|([1-9][0-9]+) 要么从2到9取一个数字,要么输入任何不同于0的数字,至少输入另一个数字。。。 这样用户就无法输入0或1 我不知道那里是否有语法错误,或者我该怎么办? 提前感谢。我建议您先输入32.TryParse,然后测试得到的值是否在您想要的范围内。这里有一个大致的想法: int enteredValue; if(Int32.

我正在尝试创建一个只允许用户输入值为2或更多的数字的正则表达式(不允许0和1)

我已经尝试了很长一段时间,但没有成功。。。 我试过这个例子:

[2-9]|([1-9][0-9]+)
要么从2到9取一个数字,要么输入任何不同于0的数字,至少输入另一个数字。。。 这样用户就无法输入0或1

我不知道那里是否有语法错误,或者我该怎么办?
提前感谢。

我建议您先输入32.TryParse,然后测试得到的值是否在您想要的范围内。这里有一个大致的想法:

int enteredValue;

if(Int32.TryParse(TextBox1.Text, out enteredValue))
{
    if(enteredValue >= 2 )
    {
       //....
    }
}

Regex不适用于您试图实现的目标。

我建议您先使用Int32.TryParse,然后测试您获得的值是否在您想要的范围内。这里有一个大致的想法:

int enteredValue;

if(Int32.TryParse(TextBox1.Text, out enteredValue))
{
    if(enteredValue >= 2 )
    {
       //....
    }
}

Regex并不适用于您试图完成的任务。

我不确定您是否能够在Regex中真正做到这一点,如果您能够做到这一点,您将拥有一个非常复杂的Regex字符串。但为什么要使用正则表达式呢?您只需检查该值是否为数字且大于1。在客户机上可以使用JavaScript,然后在服务器上再次检查。这里有一个JavaScript函数来实现这一点。如果您愿意,可以在CustomValidator中使用此选项:

function CheckTwoOrLarger(x)
{
    result = false;

    if ( isFinite(x)         //Check if number
         && parseInt(x) >= 2 //Check if 2 or larger
         ) result = true;

    return result;
}

我不确定你是否能在正则表达式中做到这一点,如果你能做到这一点,你会有一个非常复杂的正则表达式字符串。但为什么要使用正则表达式呢?您只需检查该值是否为数字且大于1。在客户机上可以使用JavaScript,然后在服务器上再次检查。这里有一个JavaScript函数来实现这一点。如果您愿意,可以在CustomValidator中使用此选项:

function CheckTwoOrLarger(x)
{
    result = false;

    if ( isFinite(x)         //Check if number
         && parseInt(x) >= 2 //Check if 2 or larger
         ) result = true;

    return result;
}

究竟为什么有人想使用
Regex
来完成这项任务?即使这样,当你尝试它时发生了什么?对我来说似乎没问题。我需要为销售登记做这个。。。当你决定在几个时期内付款时,很明显这不是一个时期。。。比如说。。我卖东西,你每两周付6个月的钱。。。这意味着它应该是12个周期。那个,它只允许输入2-9,但不允许输入10和up@RohitJain很好。怎么说?如果你有问题并说:“我知道,我会用正则表达式来解决它,”现在你有两个问题。到底为什么有人想用
Regex
来完成这个任务?即使这样,当你尝试它时发生了什么?对我来说似乎没问题。我需要为销售登记做这个。。。当你决定在几个时期内付款时,很明显这不是一个时期。。。比如说。。我卖东西,你每两周付6个月的钱。。。这意味着它应该是12个周期。那个,它只允许输入2-9,但不允许输入10和up@RohitJain很好。怎么说?如果您遇到问题并说:“我知道,我将使用正则表达式来解决它,”现在您有两个问题。不应该有
&&enteredValue哦,很好地发现了。编辑了我的答案。不应该有
&&enteredValue哦,很好地发现了。编辑了我的答案。函数checkGT2(x){try{if((1*x)>2){return true}}catch(e){};return false;}我更喜欢1*x而不是parseInt。也适用于浮点数,但可以将1.0*x写入浮点。函数checkGT2(x){try{if((1*x)>2){return true}}}catch(e){};return false;}我更喜欢1*x而不是parseInt。也适用于浮点数,但可以写入1.0*x到belabor浮点数。