zoukankan      html  css  js  c++  java
  • java正则表达式

    /**
         *  校验发票号码
         *  2019年3月27日14:02:56
         *  @param invoiceNo  获取pdf定义的发票信息,即发票号
         */
        public boolean checkoutInvoiceNo(String invoiceNo) {
            //定义一个检测发票成功与否的标志位
            boolean checkResult = true;
            // 将发票号码字符串去掉所有空格
            invoiceNo = replaceBlank(invoiceNo);
            // 将发票号码中的所有横杠转化为英字横线
            invoiceNo = line(invoiceNo);
            // 全角字符->半角字符
            invoiceNo = BCConvertUtils.qj2bj(invoiceNo);
            // 发票号码只能以数字、英字逗号、英字横线
            String regex="^([-,0-9]+)$";
            Pattern p=Pattern.compile(regex);
            Matcher m=p.matcher(invoiceNo);
            // 与正则表达式不匹配时
            if(!m.matches()){
                // 记录校验不通过
                checkResult = false;
            } else {
                // 先以","来分割字符串
                String[] pdfInvoiceArr = invoiceNo.split(",");
                for (int k = 0; k < pdfInvoiceArr.length; k++) {
                    // 判断是否包含"-"
                    if (pdfInvoiceArr[k].contains("-")) {
                        // 包含"-"时,再以"-"来分割字符串
                        String[] invoiceNoLine = pdfInvoiceArr[k].split("-");
                        if (invoiceNoLine.length > 1) {
                            int numberOne = 0;
                            int numberEnd = 0;
                            // 将含有"-"的发票号顺番
                            // 发票号码长度不为8时格式不正确
                            if (!(invoiceNoLine[0].length() == 8 && (8 == invoiceNoLine[1].length()))) {
                                // 数据校验不通过
                                checkResult = false;
                                break;
                            } else {
                                numberOne = Integer.parseInt(invoiceNoLine[0]);
                                numberEnd = Integer.parseInt(invoiceNoLine[1]);
                                // '-'两边的数据,前值大于后值时,格式错误
                                if (numberOne > numberEnd) {
                                    checkResult = false;
                                    break;
                                } else {
                                    String stringOne = String.valueOf(invoiceNoLine[0]).substring(0, 3);
                                    String stringEnd = String.valueOf(invoiceNoLine[1]).substring(0, 3);
                                    // '-'两边的数据,前三位数字不一致时,格式错误
                                    if (!stringOne.equals(stringEnd)) {
                                        checkResult = false;
                                        break;
                                    }
                                }
                            }
                        }
                    } else {
                        // 不包含"-"时,发票号码长度不为8时格式不正确
                        if (pdfInvoiceArr[k].length() != 8) {
                            checkResult = false;
                            break;
                        }
                    }
                }
            }
            return checkResult;
        }
  • 相关阅读:
    借鉴文章记录
    三方框架
    常用第三方库记录
    ios block 类型
    ios runtime部分事例方法说明
    ios url网址相关问题解说
    mysql迁移数据库函数中的坑
    mysql的事务隔离级别
    MySQL数据库的默认隔离级别为什么是可重复读
    实时查看mysql连接数
  • 原文地址:https://www.cnblogs.com/xiaoniuniu886/p/11383848.html
Copyright © 2011-2022 走看看