字符串和正则表达式踩坑

    // 中石化加油卡号格式:以 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 方法需要将字符串应该是调用方

相关推荐
西猫雷婶26 分钟前
python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶
开发语言·python·opencv
kiiila26 分钟前
【Qt】对象树(生命周期管理)和字符集(cout打印乱码问题)
开发语言·qt
初晴~27 分钟前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
小_太_阳1 小时前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea
直裾1 小时前
scala借阅图书保存记录(三)
开发语言·后端·scala
黑胡子大叔的小屋1 小时前
基于springboot的海洋知识服务平台的设计与实现
java·spring boot·毕业设计
ThisIsClark1 小时前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
唐 城1 小时前
curl 放弃对 Hyper Rust HTTP 后端的支持
开发语言·http·rust
雷神乐乐2 小时前
Spring学习(一)——Sping-XML
java·学习·spring
小林coding3 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云