public static boolean isLegal(String numberStr) {
        /*
         * 有两种方法验证 数字金额字符串numberString 是否合法:
         *     1.一项一项条件的判断(更容易理解) 
         *     2.使用正则表达式匹配(更简洁)
         * 
         * 这里采用第二种方法。
         */
        // 下面是第二种方法
        if (numberStr == null || numberStr.isEmpty()) { // 如果numberStr为NULL，则isEmpty()不会执行，所以不会产生NullPointerException
            return false;
        }
        String regex = "\\d{0,12}(\\.|\\.\\d{0,3})?";
        if (!numberStr.matches(regex)) {
            return false;
        }

        return true;

        /*下面是第一种方法
        //1.不能为空
        if( numberStr==null || numberStr.isEmpty()){
            return false;
        }
        //2.不能有非法字符
        short dotCount = 0;   //小数点数量
        for(int i=0;i<numberStr.length();i++){
            char c = numberStr.charAt(i);
            switch (c){  
                case '0': case '1': case '2': case '3': case '4':
                case '5': case '6': case '7': case '8': 
                case '9': {  
                              break;
                }
                case '.': {
                              dotCount++;
                              break;
                }
                default: {    return false;
                }  
            }
        }
        //3.小数点不能超过1个
        if(dotCount>1){
            return false;
        }
        //4.整数部分最多12位，小数部分最多3位
        String[] cutedNumber = numberStr.split("\\.");
        if(cutedNumber.length == 1 && cutedNumber[0].length() >12){
            return false;
        }else if(cutedNumber.length == 2 && (cutedNumber[0].length()>12 || cutedNumber[1].length()>3) ){  
            return false;
        }
        
        return true;*/
    }