字符串和正则表达式踩坑

复制代码
    // 中石化加油卡号格式:以 100011 开头共19位
    public static final String ZHONGSHIYOU_OIL_CARD_PATTERN = "^100011\\d{13}$";

    // 中石油加油卡号格式:以90、95、70开头共16位
    public static final String ZHONGYOU_OIL_CARD_PATTERN = "^(90|95|70)\\d{14}$";

    
public static boolean checkOilCardNumber(String cardNumber) {
        // 使用正则表达式检查加油卡号是否符合规定
        return OrderProductConst.ZHONGSHIYOU_OIL_CARD_PATTERN.equals(cardNumber) || OrderProductConst.ZHONGYOU_OIL_CARD_PATTERN.equals(cardNumber);
    }


 public static void main(String[] args) {
        System.out.println(checkOilCardNumber("9501234567890123"));
    }

上面代码输出 false

将 equals 改成 matchers 也是false

复制代码
    // 中石化加油卡号格式:以 100011 开头共19位
    public static final String ZHONGSHIYOU_OIL_CARD_PATTERN = "^100011\\d{13}$";

    // 中石油加油卡号格式:以90、95、70开头共16位
    public static final String ZHONGYOU_OIL_CARD_PATTERN = "^(90|95|70)\\d{14}$";

    
public static boolean checkOilCardNumber(String cardNumber) {
        // 使用正则表达式检查加油卡号是否符合规定
        return OrderProductConst.ZHONGSHIYOU_OIL_CARD_PATTERN.matcher(cardNumber) || OrderProductConst.ZHONGYOU_OIL_CARD_PATTERN.matcher(cardNumber);
    }


 public static void main(String[] args) {
        System.out.println(checkOilCardNumber("9501234567890123"));
    }

将matchers 两个参数换了位置 就输出 true

复制代码
  public static boolean checkOilCardNumber(String cardNumber) {
        // 使用正则表达式检查加油卡号是否符合规定
   
        return cardNumber.matches(OrderProductConst.ZHONGSHIYOU_OIL_CARD_PATTERN)
                || cardNumber.matches(OrderProductConst.ZHONGYOU_OIL_CARD_PATTERN);
    }


    public static void main(String[] args) {
        System.out.println(checkOilCardNumber("9501234567890123"));
    }

查看源码:

matchers 方法需要将字符串应该是调用方

相关推荐
Mao_Hui1 分钟前
Unity3d实时读取Modbus RTU数据
开发语言·嵌入式硬件·unity·c#
echome8882 分钟前
Python 装饰器详解:从入门到精通的实用指南
开发语言·python
重生之后端学习7 分钟前
62. 不同路径
开发语言·数据结构·算法·leetcode·职场和发展·深度优先
冬夜戏雪10 分钟前
实习面经摘录(六)
java
把你毕设抢过来13 分钟前
基于Spring Boot的演唱会购票系统的设计与实现(源码+文档)
java·spring boot·后端
⑩-13 分钟前
Redis内存淘汰策略?如何处理大Key?
java·数据库·redis
淡泊if16 分钟前
eBPF 实战:一次诡异的 Nginx 高延迟,我用 5 分钟在内核里找到了真凶
java·运维·nginx·微服务·ebpf
栗子~~19 分钟前
hardhat 单元测试时如何观察gas消耗情况
开发语言·单元测试·区块链·智能合约
The hopes of the whole village21 分钟前
Matlab FFT分析
开发语言·matlab
李白的粉24 分钟前
基于springboot的桂林旅游景点导游平台
java·spring boot·毕业设计·课程设计·源代码·桂林旅游景点导游平台