使用正则表达式,以实现下面的功能: 
1)不可以为空 
2)允许含有特殊字符:! $ % & \ () - / ; < ? [] ^ {} 
3)必须同时含有半角英文大写字母、半角英文小写字母以及半角数字 
4)8文字以上,16文字以下 

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【tteesstt】截止到2008-07-15 22:23:53的历史汇总数据(不包括此帖):
    发帖的总数量:109                      发帖的总分数:7000                     每贴平均分数:64                       
    回帖的总数量:76                       得分贴总数量:8                        回帖的得分率:10%                      
    结贴的总数量:108                      结贴的总分数:6900                     
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:100                      
    结贴的百分比:99.08 %               结分的百分比:98.57 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    值得尊敬
      

  2.   

    这样行不行?? public static void main(String[] args) {
    System.out.println(regexText(""));
    System.out.println(regexText("123"));
    System.out.println(regexText("A4783"));
    System.out.println(regexText("zA25$4783"));
    System.out.println(regexText("z457E{"));
    System.out.println(regexText("524754x1&#"));
    System.out.println(regexText("10248Zgk@"));
    System.out.println(regexText("102xfas44dsfdhd48Zgk@"));
    }

    public static boolean regexText(String value) {
    return value.matches("^(?=.*\\p{Punct})(?=.*\\p{Alnum}).{8,16}$");
    }
      

  3.   

    关于长度的测试不会写,只好用2个正则,一个判断数据,另一个判断长度public class T {
      public static void main(String[] args) {
        System.out.println(regexText("13a4C5fdsfiaf"));
        System.out.println(regexText("123"));
        System.out.println(regexText("A47c83"));
        System.out.println(regexText("ZA25$4783"));
        System.out.println(regexText("z457E{"));
        System.out.println(regexText("524754x1&#"));
        System.out.println(regexText("10248Zgk@"));
        System.out.println(regexText("102xfas44dsfdhd48Zgk@"));
      }  public static boolean regexText(String value) {
        String all = "[\\p{Graph}]{0,}";
        StringBuilder b = new StringBuilder();
        b.append("(" + all + "[0-9]+" + all + "[a-z]+" + all + "[A-Z]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[0-9]+" + all + "[A-Z]+" + all + "[a-z]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[a-z]+" + all + "[0-9]+" + all + "[A-Z]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[a-z]+" + all + "[A-Z]+" + all + "[0-9]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[A-Z]+" + all + "[a-z]+" + all + "[0-9]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[A-Z]+" + all + "[0-9]+" + all + "[a-z]+" + all + ")");
        return value.matches(b.toString()) && value.matches("[\\p{Graph}]{8,16}");
      }
    }运行结果为
    true
    false
    false
    false
    false
    false
    true
    false
      

  4.   

    value.matches("^(?=.*\\p{Punct})(?=.*\\p{Alnum}).{8,16}$");
      

  5.   


    不好意思,忽略了"同时"了. 下面这样行不行?    public static void main(String[] args) {
            System.out.println(regexText(""));
            System.out.println(regexText("123"));
            System.out.println(regexText("A4783"));
            System.out.println(regexText("zA25$4783"));
            System.out.println(regexText("z457E{"));
            System.out.println(regexText("524754x1&#"));
            System.out.println(regexText("10248Zgk@"));
            System.out.println(regexText("102xfas44dsfdhd48Zgk@"));
            System.out.println(regexText("xfAs.!.dsf5dhdoo"));
        }
        
        public static boolean regexText(String value) {
            return value.matches("^(?=.*\\p{Punct})(?=.*\\p{Lower})(?=.*\\p{Upper})(?=.*\\p{Digit}).{8,16}$");
        }
      

  6.   

    晕,又看错了...2)允许含有特殊字符:! $ % & \ () - / ; < ? [] ^ {} 看成必须了..
      

  7.   

    "^(?=.*\\p{Punct})(?=.*\\p{Lower})(?=.*\\p{Upper})(?=.*\\p{Digit}).{8,16}$"
      

  8.   

    public class T {
      public static void main(String[] args) {
        System.out.println(regexText("13a4C5fdsfiaf"));
        System.out.println(regexText("123"));
        System.out.println(regexText("A47c83"));
        System.out.println(regexText("ZA25$4783"));
        System.out.println(regexText("z457E{"));
        System.out.println(regexText("524754x1&#"));
        System.out.println(regexText("10248Zgk@"));
        System.out.println(regexText("102xfas44dsfdhd48Zgk@"));
      }  public static boolean regexText(String value) {
        String all = "[\\p{Graph}]{0,}";
        StringBuilder b = new StringBuilder();
        b.append("(" + all + "[0-9]+" + all + "[a-z]+" + all + "[A-Z]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[0-9]+" + all + "[A-Z]+" + all + "[a-z]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[a-z]+" + all + "[0-9]+" + all + "[A-Z]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[a-z]+" + all + "[A-Z]+" + all + "[0-9]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[A-Z]+" + all + "[a-z]+" + all + "[0-9]+" + all + ")");
        b.append("|");
        b.append("(" + all + "[A-Z]+" + all + "[0-9]+" + all + "[a-z]+" + all + ")");
        return value.matches(b.toString()) && value.matches("[\\p{Graph}]{8,16}");
      }
    }:! $ % & \ () - / ; < ? [] ^ {} 
      

  9.   

    这下应该没问题了.    public static void main(String[] args) {
            System.out.println(regexText(""));
            System.out.println(regexText("123"));
            System.out.println(regexText("A4783"));
            System.out.println(regexText("zA25$4783"));
            System.out.println(regexText("z4uu3j57E{"));
            System.out.println(regexText("524754x1&#"));
            System.out.println(regexText("10248Zgk@"));
            System.out.println(regexText("102xfas44dsfdhd48Zgk@"));
            System.out.println(regexText("xfAs!dsf5dh&doo"));
            System.out.println(regexText("xfAsmdsf5dhdoo"));    }
        
        public static boolean regexText(String value) {
            return value.matches("^(?=.*\\p{Lower})(?=.*\\p{Upper})(?=.*\\p{Digit})(.((?<!\\p{Punct})|(?<=[-!$%&()/;<?{}\\[\\]\\\\^]))){8,16}$");
        }
      

  10.   

    false
    false
    false
    true
    true
    false
    false
    false
    true
    true
      

  11.   

    import java.util.regex.Pattern;public class Test01 {    public static void main(String[] args) {
            String[] strs = {
                    "",
                    "123",
                    "A4783",
                    "zA25$4783",
                    "z4uu3j57E{",
                    "524754x1&#",
                    "10248Zgk@",
                    "102xfas44dsfdhd48Zgk@",
                    "xfAs!dsf5dh&doo",
                    "xfAsmdsf5dhdoo"
                };        // 限定条件
             final String CONDITION = "(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)";        // 允许出现的字符
             final String SPECIAL_CHAR = "[-A-Za-z0-9!$%&()/;<?{}\\[\\]^\\\\]";        // 数量
             final String QUANTITY = "{8,16}";        Pattern pattern = Pattern.compile(CONDITION + SPECIAL_CHAR + QUANTITY);        for(String str : strs) {
                System.out.println(pattern.matcher(str).matches());
            }
        }
    }
      

  12.   

    请 火龙果 到 http://topic.csdn.net/u/20080716/22/80cdd418-a0e9-4e7e-8435-df6d4bc11c4a.html给解释一下您的正则好吗?拜托了!!!