【问题标题】:regex that only accepts numbers 2 and up只接受数字 2 及以上的正则表达式
【发布时间】:2012-11-30 03:52:25
【问题描述】:

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

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

[2-9]|([1-9][0-9]+)

要么你取一个从 2 到 9 的数字,要么你输入任何不同于 0 的数字和至少另一个数字...... 这样用户就无法输入 0 或 1...

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

【问题讨论】:

  • 为什么会有人想要使用Regex 来完成这项任务?即使那样,当你尝试它时发生了什么?我觉得没问题。
  • 我需要为销售注册执行此操作...当您决定分几个时期付款时,很明显它不会是一个时期...假设..我卖东西,你将每 2 周支付 6 个月的费用......所以这意味着它应该是 12 个周期。那个,它只允许输入 2-9,但不能输入 10 及以上
  • @RohitJain 好点。有什么说法?如果你有一个问题说:“我知道,我会用正则表达式来解决它”,那么你就有两个问题了。

标签: c# asp.net regex


【解决方案1】:

我建议你先 Int32.TryParse 然后测试你得到的值是否在你想要的范围内。这是一个粗略的想法:

int enteredValue;

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

正则表达式不适用于您要完成的任务。

【讨论】:

  • 不应该有&& enteredValue <=9。 OP 状态 2 个或更多
  • 哦,很好看。编辑了我的答案。
【解决方案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;
}

【讨论】:

  • function checkGT2(x){ try { if( (1*x) > 2){ return true } } catch(e){};返回假; }
  • 我更喜欢 1*x 而不是 parseInt。也适用于浮点数,但可以写成 1.0*x 来标记浮点数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 2020-07-26
相关资源
最近更新 更多