日期格式dd\mm\yyyy的正则表达式是什么?我无法找到这个格式的正则表达式。
正则表达式用于匹配 dd/mm/yyyy 格式的模式。
String regex = "^([0-2][0-9]||3[0-1])/(0[0-9]||1[0-2])/([0-9][0-9])?[0-9][0-9]$";
([0-9]{2})\\([0-9]{2})\\([0-9]{4})
这样的正则表达式解析日期,然后分别提取每个部分(dd
, mm
, 和 yyyy
)并尝试创建一个java.util.Date
对象./
)而不是反斜杠(\
)编写,\\\\
)。 在 Java 字符串中为了写反斜杠,我们需要转义字符(又是一个\
)。([0-9]{2})\\\\([0-9]{2})\\\\([0-9]{4})
吗? - blackcompe /**
* Created with IntelliJ IDEA.
* User: S34N
* Date: 2013/07/30
* Time: 8:21 AM
* To change this template use File | Settings | File Templates.
*/
//Import the required classes/packages
import javax.swing.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class dateInputScan {
public static void main(String args[]) {
dateInputScan run = new dateInputScan();
run.dateInputScan();
}
public void dateInputScan() {
//Instantiating variables
String lvarStrDateOfTransaction = null;
DateFormat formatter = null;
Date lvarObjDateOfTransaction = null;
//Use one of the following date formats.
lvarStrDateOfTransaction = "29/07/2013";
//lvarStrDateOfTransaction = "29-07-2013";
//lvarStrDateOfTransaction = "20130729";
//lvarStrDateOfTransaction = "2013-07-29";
//lvarStrDateOfTransaction = "29/07/2013";
//You can also add your own regex (Regular Expression)
if (lvarStrDateOfTransaction.matches("([0-9]{2})/([0-9]{2})/([0-9]{4})")) {
formatter = new SimpleDateFormat("dd/MM/yyyy");
} else if (lvarStrDateOfTransaction.matches("([0-9]{2})-([0-9]{2})-([0-9]{4})")) {
formatter = new SimpleDateFormat("dd-MM-yyyy");
} else if (lvarStrDateOfTransaction.matches("([0-9]{4})([0-9]{2})([0-9]{2})")) {
formatter = new SimpleDateFormat("yyyyMMdd");
} else if (lvarStrDateOfTransaction.matches("([0-9]{4})-([0-9]{2})-([0-9]{2})")) {
formatter = new SimpleDateFormat("yyyy-MM-dd");
} else if (lvarStrDateOfTransaction.matches("([0-9]{4})/([0-9]{2})/([0-9]{2})")) {
formatter = new SimpleDateFormat("yyyy/MM/dd");
}
try {
lvarObjDateOfTransaction = formatter.parse(lvarStrDateOfTransaction);
JOptionPane.showMessageDialog(null, "Date: " + lvarObjDateOfTransaction);
} catch (Exception ex) { //Catch the Exception in case the format is not found.
JOptionPane.showMessageDialog(null, ex);
}
}
}
([0-2][0-9]||3[0-1])\\(0[0-9]||1[0-2])\\((19|20)\d\d)
以上正则表达式将验证: 第1、2个字符在0-31的范围内 接下来的一组必须包含0-12范围内的字符 然后下一组包含1900-2099年的年份
对我来说它完美地工作。
我已经为格式DDMMYY完成了这个任务。
([0-2]?[0-2][0-9]|3[0-1])(0?0[1-9]|1[0-2])([0-9][0-9])
如果你想使用修复版本,请使用:
private static final String FIXED_DATE_PATTERN =
"(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/((19|20)\\d\\d)";
这将强制日期和月份的值为零,并且不允许像00/12/2018或07/00/2018这样的输入格式在DD/MM/YYYY中。
^[0-3]{1}[0-9]{1}/[0-1]{1}[1-2]{1}/[1-9]{1}[0-9]{3}$
,它有效。String dateRegEx="^[0-3]{1}[0-9]{1}/[0-1]{1}[1-2]{1}/[1-9]{1}[0-9]{3}$";
System.out.println(Pattern.matches(dateRegEx, "01/01/1990"));
对于 "dd/MM/yyyy",您可以使用:
(0[1-9]|1[0-9]|2[0-9]|3[0-1]|[1-9])/(0[1-9]|1[0-2]|[1-9])/([0-9]{4})
日(dd):可以接受1或01、9或09(直到31日)
月(MM):可以接受1或01(直到12月)
年(yyyy):可以接受4位数字