2015-05-27 121 views
-1

有人可以帮助我生成一个正则表达式来检查输入的数字是否大于1,这是我试过的:'[1-9] [0-9] | [2-9]',但这不允许我输入2位以上的数字。我很新进this.Please帮助我..正则表达式来检查数字是否大于1

+3

当然,它可以用正则表达式完成 - 但为什么? – amit

+0

[0-9] <通配符变量的时间> [2-9] 这应该做到这一点,但我同意阿米特,这不是你应该使用正则表达式。 – Stultuske

+1

它实际上用于验证使用dojo的字段,我需要这个正则表达式。 – lazyCat

回答

1

可以做到这一点与下面的正则表达式:[2-9]|([1-9][0-9]+)

这意味着:2和9之间,或在一个单一的数字:1和9之间的数字后面跟着一个或多个数字。

正则表达式非常强大,有时候人们试图将它们用于一切。这通常是您不需要正则表达式的示例。只需检查if (n > 1)比使用正则表达式执行此任务更简单,更清晰。

+0

这将允许'00'。 –

+0

@AvinashRaj你是对的,修好了。它显示了为什么'if(n> 1)'会更简单,更不容易出错...... – Jesper

1

你可以去这样的事情:

regex = "([2-9][0-9]*|1[0-9]+)" 

代码:

String regex = "([2-9][0-9]*|1[0-9]+)"; 
    Matcher m = Pattern.compile(regex).matcher(""); 

    m.reset("1"); 
    System.out.println(m.matches()); 
    m.reset("2"); 
    System.out.println(m.matches()); 
    m.reset("10"); 
    System.out.println(m.matches()); 
    m.reset("24"); 
    System.out.println(m.matches()); 
    m.reset("10842"); 
    System.out.println(m.matches()); 

说明:

你基本上有两种选择

  1. 该号码可以以2,3,...,9 - 并有任何数量的数字 后,任何一种:[2-9][0-9]*
  2. 的数量可以从1开始,并且必须具有以下一些数字:1[0-9]+

结合他们得到你的正则表达式。

+0

@nhahtdh谢谢,在代码中输入错误。 (但解释确实解释了它,谢谢你的反馈)。 – amit

1

这将使只有当它大于1

"^(?:[1-9]\\d+|[2-9])$" 

DEMO

0

无论是最后一位必须是大于1或非0数有出现其他位数的数字比最后一个。正则表达式是:

"[2-9]|[1-9][0-9]+" 
相关问题