^([a-zA-Z]*?)((?:[0-9]+(?:[0-9]|[a-zA-Z])*)*)$group 2 为空则是混合型,否则是纯字母型,match失败则两者都不是

解决方案 »

  1.   


    这个表达式为什么全数字的都能通过
    全数字,则group2 不为空,从而起到判断的作用
      

  2.   


    这个表达式为什么全数字的都能通过
    全数字,则group2 不为空,从而起到判断的作用我希望全数字的不能通过验证
      

  3.   


    这个表达式为什么全数字的都能通过
    全数字,则group2 不为空,从而起到判断的作用我希望全数字的不能通过验证
    那就改成:
    ^([a-zA-Z]*?)((?:[a-zA-Z]+[0-9]+(?:[0-9]|[a-zA-Z])*)|(?:[0-9]+[a-zA-Z]+(?:[0-9]|[a-zA-Z])*)*)$
      

  4.   


    这个表达式为什么全数字的都能通过
    全数字,则group2 不为空,从而起到判断的作用我希望全数字的不能通过验证
    那就改成:
    ^([a-zA-Z]*?)((?:[a-zA-Z]+[0-9]+(?:[0-9]|[a-zA-Z])*)|(?:[0-9]+[a-zA-Z]+(?:[0-9]|[a-zA-Z])*)*)$还是不能用啊
      

  5.   


    Scanner s=new Scanner(System.in);
    String str=s.nextLine();
    final String REGEX="^[a-z;]+$";
    final String REGEX1="^[0-9;]+$";
    final String REGEX2="^[a-z0-9;]+$";
    Matcher m=Pattern.compile(REGEX, Pattern.CASE_INSENSITIVE).matcher(str);
    if(m.find()){
    System.out.println("纯英");
    }else{
    m=Pattern.compile(REGEX1, Pattern.CASE_INSENSITIVE).matcher(str);
    if(m.find()){
    System.out.println("不能为纯数字");
    }else{
    m=Pattern.compile(REGEX2, Pattern.CASE_INSENSITIVE).matcher(str);
    if(m.find()){
    System.out.println("英数混合");
    }else{
    System.out.println("不能有特殊字符");
    }
    }
    }
    我这个逻辑和正则是比较简单明了的,可能有高手写出正则能把纯数字和特殊字符算一种情况,这样少一个判断。