日期,时间的简单匹配(只说格式,不做具体计算)如下:
String[] date = null; String dateReg = "^d{4}(-|/|.)d{1,2}$"; Pattern datep = Pattern.compile(dateReg); Matcher datem = datep.matcher(dateString); if (datem.matches()) { date = dateString.split("-"); } else { Date d = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); date = format.format(d).split("-"); }
String[] time = null; String timeReg = "^[012]?d[:][012345]?d$"; Pattern timep = Pattern.compile(timeReg); Matcher timem = timep.matcher(timeString); if (timem.matches()) { time = timeString.split(":"); } else { Date d = new Date(); SimpleDateFormat format = new SimpleDateFormat("HH:mm"); time = format.format(d).split(":"); }
但是对于复杂的日期匹配,还需要进行计算,可以参考如下(摘抄):
一、简单的日期判断(YYYY/MM/DD): Java代码 ^d{4}(-|/|.)d{1,2}1d{1,2}$ ^d{4}(-|/|.)d{1,2}$ 二、演化的日期判断(YYYY/MM/DD| YY/MM/DD): Java代码 ^(^(d{4}|d{2})(-|/|.)d{1,2}3d{1,2}$)|(^d{4}年d{1,2}月d{1,2}日$)$ ^(^(d{4}|d{2})(-|/|.)d{1,2}日$)$ 三、加入闰年的判断的: 实例: Java代码 ^((((1[6-9]|[2-9]d)d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]d|3[01]))|(((1[6-9]|[2-9]d)d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]d|30))|(((1[6-9]|[2-9]d)d{2})-0?2-(0?[1-9]|1d|2[0-8]))|(((1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$ ^((((1[6-9]|[2-9]d)d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]d|3[01]))|(((1[6-9]|[2-9]d)d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]d|30))|(((1[6-9]|[2-9]d)d{2})-0?2-(0?[1-9]|1d|2[0-8]))|(((1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
见链接:
http://hi.baidu.com/niuhea/item/1c09e332186614169cc65e12
此外,还有其他情况,如邮箱,电话号码等:
见
http://rongzhending.blog.163.com/blog/static/10279614520107322352727/
另:在代码拷贝的过程中往往会带 xx. 这样的前缀,xx是数字,要去掉可以使用正则 [0-9]{2,3}.或者 ^[0-9]{2,3}. ,我一般使用前者,很多情况复制的前面有一些空格 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|