【发布时间】:2020-12-27 20:23:25
【问题描述】:
我正在尝试将正则表达式仅用于 dd/MM/yyyy 日期格式,但如果我输入它接受的 dd/MM/yy 值。我想知道如何让它只接受 dd/MM/yyyy 值。
如果我使用
new SimpleDateFormat("dd/MM/yyyy").parse(value);
代码继续接受dd/MM/yy 格式。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String value = "10/02/20";
Pattern pattern = Pattern.compile("^([0-2][0-9]||3[0-1])/(0[0-9]||1[0-2])/([0-9][0-9])?[0-9][0-9]$");
Matcher matcher = pattern.matcher(value);
System.out.println(matcher.find());
}
}
【问题讨论】:
-
请在这里用英语提问或在Stackoverflow Portugues提问。顺便说一句,您为什么要尝试使用正则表达式重新格式化日期
String?您可以使用java.time.LocalDate和合适的java.time.format.DateTimeFormatters。 -
我尝试使用但仍然接受值 dd / mm / yyyy
-
你需要一个
DateTimeFormatter.ofPattern("dd/MM/uu").withResolverStyle(ResolverStyle.STRICT);,它只接受两位数的年份。 -
DateTimeFormatter withResolverStyle = DateTimeFormatter.ofPattern("dd/MM/yyyy") .withResolverStyle(ResolverStyle.STRICT); LocalDate.parse(value, withResolverStyle);
-
一件事:不要用
y表示年份,它表示年代,在年代不明确的情况下可能会造成麻烦。使用u。否则:很高兴它有帮助,不客气。
标签: java regex spring string date