字符串和正则表达式踩坑

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

相关推荐
智慧物业老杨2 小时前
物业数字化落地思考:真正的转型,是底层数据秩序的重构
java·大数据·人工智能·微服务·系统架构
星空5 小时前
金蝶苍穹build.gradle配置
java·build.gradle
C++ 老炮儿的技术栈7 小时前
我们在设计tcp协议时,要传一个字符串过去,报文:头十长度十内容,是否要把‘\0‘也填入,长度是否包含‘\0‘
开发语言·数据结构·c++·mfc·c
传奇开心果编程7 小时前
【Rust入门练中学】第2课:变量、可变性与常量
开发语言·学习·rust
zr想努力8 小时前
从0开始配置Perforce4环境
开发语言
步行cgn8 小时前
Spring 基于 XML 的自动装配:byName 详解
java·后端·spring
大帅点兵9 小时前
Apache Ant 1.9.9 完整讲解
java
幸运小圣9 小时前
PointerEvent 常用属性与事件整理【JavaScript】
开发语言·javascript·ecmascript
LuTshoes9 小时前
spring ai 实战 手搓 PlaneExecuteAgent
java·人工智能·spring·ai
这料鬼有毒9 小时前
二刷hot100-73.矩阵置零
java