字符串和正则表达式踩坑

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

相关推荐
Cc.Y4 小时前
Java零基础入门:字符串深度掌握——从基础API到StringBuilder性能优化
java·开发语言·性能优化
java资料站8 小时前
十一、评估测试
开发语言·人工智能·python
左手の明天8 小时前
SLIP 协议封装与解析详解:原理、C 代码与实战案例
linux·c语言·开发语言·c++
shuoshuohaohao8 小时前
MyBatis 小知识点
java·spring·mybatis
海上小飞龙9 小时前
【KMP算法-下篇】同一道题:Java 库函数 2600 微秒,手写 KMP 16 微秒
java·开发语言·算法
朝朝辞暮i9 小时前
C++ 第 12 课:局部变量、作用域、变量生命周期
开发语言·c++·算法
狗凯之家源码网9 小时前
淘客口令落地页生成器 PHP 版深度评测
开发语言·php
画绛集美术9 小时前
本地化部署LLM用于美术史问答:一间美术教室的实践记录
开发语言·php
谢亮_vipxieliang9 小时前
泛型擦除、通配符与 PECS 一次讲透
java·面试
八解毒剂10 小时前
【计组】中央处理器CPU
java·开发语言·计算机组成原理