字符串和正则表达式踩坑

发布于:2024-07-08 ⋅ 阅读:(48) ⋅ 点赞:(0)
    // 中石化加油卡号格式:以 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 方法需要将字符串应该是调用方


网站公告

今日签到

点亮在社区的每一天
去签到