• 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;
        }
  • 相关阅读:
    高速排序
    [小米] 并查集
    Mysql5.7新特性
    双链表删除/插入节点
    【LeetCode-面试算法经典-Java实现】【144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)】
    Repractise基础篇:Web应用开发七日谈
    [leetcode] Palindrome Number(不使用额外空间)
    SpringFox 初体验
    用RegularJS开发小程序 — mpregular解析
    MySQL Group Replication数据安全性保障
  • 原文地址:https://www.cnblogs.com/xiaoniuniu886/p/11383848.html
Copyright © 2020-2023  润新知