繁体   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