簡體   English   中英

Java 正則表達式匹配返回 false 的方法

[英]Java regex matches method returning false

我正在嘗試制作一個正則表達式來檢測字符串中是否有日期,無論它是:

  • DD/MM/YYYY
  • DD/MM/YY
  • MM/DD/YYYY
  • MM/DD/YY
  • YYYY/MM/DD
  • YY/MM/DD

我嘗試使用Pattern.matches()在 class 中對其進行測試,但它返回false ,即使我的字符串中有一些日期並且regex101似乎表明我的正則表達式是正確的。

這是我測試的代碼:

import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        String line = "31/07/12;401000;02/04/2013;400;";
        System.out.println(Pattern.compile("\\d{2,4}/\\d{2}/\\d{2,4}").matcher(line).matches());
    }
}

我想知道這是否是一個選項問題,但我找不到那個方向上的任何 go。 我該怎么做才能讓它返回true

像這樣嘗試。 檢查並查看匹配器是否可以找到任何匹配項,然后打印出匹配的組。

String line = "31/07/12;401000;02/04/2013;400;";
Matcher m = Pattern.compile("\\d{2,4}/\\d{2}/\\d{2,4}").matcher(line);
while (m.find()) {
    System.out.println(m.group());
}

印刷

31/07/12
02/04/2013

請注意,您的正則表達式也可能匹配錯誤指定的日期。 例如,日和月不能同時為四位數。 你最好擁有多種模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM