// 中石化加油卡號格式:以 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 方法需要將字符串應該是調用方