请哪位帮忙写一个正则表达式,匹配4位长的整数,但不能包括0000.
即匹配0001-9999之间所有的字符串.

解决方案 »

  1.   

    void find(String src){               
    String p="[0-9]{3}[1-9]{1}";
    Pattern pp=Pattern.compile(p);
    Matcher m=pp.matcher(src);
    int j=0;
    while(m.find(j)){
    System.out.println(m.group());
    j=m.start()+1;
    }
    }
      

  2.   

    很简单:String reg="^[0-9]{3}[1-9]{1}$";
      

  3.   

    [0-9]{3}[1-9]{1}有缺陷,如1000不匹配
    下面这个可以,但是有点笨   
              String p="([0-9])([0-9])([0-9])([0-9])";
    Pattern pp=Pattern.compile(p);
    Matcher m=pp.matcher("00001234567891000");
    int j=0;
    int g1,g2,g3,g4;
    while(m.find(j)){
    g1=Integer.parseInt(m.group(1));
    g2=Integer.parseInt(m.group(2));
    g3=Integer.parseInt(m.group(3));
    g4=Integer.parseInt(m.group(4));
    if(g1+g2+g3+g4!=0)
    System.out.println(m.group());
    j=m.start()+1;
    }
      

  4.   

    /*主要以返回boolean的方式来判断它是否通过验证*/
    <script language="JavaScript" type="text/javascript">
    function isDigit(sDigit)

    //参数必须为一个
    if (arguments.length != 1) return false
    //判断格式的正则表达式
    var  rex =/^(\d{1})(\d{1})(\d{1})(\d{1})$/   
    var  m   =   rex.exec(sDigit);   
    if  (m   ==   null)   return   false; 
    var D_F, D_S, D_T,D_FO
    D_F = parseFloat(m[1])
    D_S = parseFloat(m[2])
    D_T=parseFloat(m[3])
    D_FO=parseFloat(m[4])
    //判断是否0000
    if ((D_F+D_S+D_T+D_FO)==0){
    return false
    }
    return true

    </script>
      

  5.   

    ^加个简单的正向预搜索 String s = "0000";
    String regex = "^(?!0000)\\d{4}$";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(s);
    if (m.matches()) {
    System.out.println(m.group());
    }