怎么用正则表达式来验证日期啊 (yyyy-MM-dd)

怎么用正则表达式验证日期,求救... 怎么用正则表达式验证日期,求救 展开
 我来答
幻翼高达Zero
2019-05-22 · TA获得超过1.7万个赞
知道答主
回答量:499
采纳率:0%
帮助的人:8.3万
展开全部

日期格式“yyyy-MM-dd”可以使用正则表达式“\\d{4}-\d{\1-\12}-\d{\1-\31}?”来验证。

其中,“\d{4}”代表4位0-9的数字,“\d{\1-\12}”代表数字1-12,“\d{\1-\31}”代表数字1-31。

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

扩展资料:

常用正则表达式:

1、验证用户名和密码

正则表达式:("^[a-zA-Z]\w{5,15}$")

正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位

2、验证电话号码

正则表达式:("^(\d{3,4}-)\d{7,8}$")

正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;

3、验证手机号码

正则表达式:"^1[3|4|5|7|8][0-9]{9}$"

4、验证Email地址

正则表达式:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$")

5、只能输入由数字和26个英文字母组成的字符串

正则表达式:("^[A-Za-z0-9]+$");

6、整数或者小数

正则表达式:^[0-9]+([.][0-9]+){0,1}$

参考资料来源:百度百科-正则表达式

SxMints
推荐于2017-10-10
知道答主
回答量:13
采纳率:0%
帮助的人:3.8万
展开全部
1>.首先需要验证年份,显然,年份范围为
0001 - 9999,匹配YYYY的正则表达式为:
[0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}
其中
[0-9] 也可以表示为 \d,但 \d 不如 [0-9] 直观,因此下面我将一直采用
[0-9]<BR><BR>用正则表达式验证日期的难点有二:一是大小月份的天数不同,二是闰年的考虑。<BR>对于第一个难点,我们首先不考虑闰年,假设2月份都是28天,这样,月份和日期可以分成三种情况
1、月份为1, 3, 5, 7, 8, 10, 12,天数范围为 01 - 31,匹配MM-DD的正则表达式为:(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])
2、月份为4, 6, 9, 11,天数范围为 01-30,匹配MM-DD的正则表达式为:
(0[469]|11)-(0[1-9]|[12][0-9]|30
3、月份为2,考虑平年情况,匹配MM-DD的正则表达式为:02-(0[1-9]|[1][0-9]|2[0-8根据上面的成果,我们可以得到匹配平年日期格式为YYYY-MM-DD的正则表达式
([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))
接着我们来解决第二个难点:闰年的考虑。根据闰年的定义,我们可以将闰年分为两类
1、能被4整除但不能被100整除的年份。寻找后两位的变化规律,可以很快得到下面的正则匹配([0-9]{2})(0[48]|[2468][048]|[13579][26])
2、能被400整除的年份。能被400整除的数肯定能被100整除,因此后两位肯定是00,我们只要保证前两位能被4整除即可,相应的正则表达式为:(0[48]|[2468][048]|[3579][26])00</BLOCKQUOTE></SPAN>闰年的2月份有29天,因此匹配闰年日期格式为YYYY-MM-DD的正则表达式为(([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29最后,将平年和闰年的日期验证表达式合并,我们得到最终的验证日期格式为YYYY-MM-DD的正则表达式为:(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)
DD/MM/YYYY格式的正则验证表达式为:(((0[1-9]|[12][0-9]|3[01])/((0[13578]|1[02]))|((0[1-9]|[12][0-9]|30)/(0[469]|11))|(0[1-9]|[1][0-9]|2[0-8])/(02))/([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}))|(29/02/(([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00)))
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wackyer
2012-04-01 · TA获得超过928个赞
知道小有建树答主
回答量:605
采纳率:71%
帮助的人:387万
展开全部
我觉得用正则验证是不是符合你的格式就行了 至于是否是日期格式,如果用正则的话 效率可能不是很高,用其他语言的逻辑进行判断吧
判断格式 "^[1-9][0-9]{3}-(0[1-9]|1[0-2])-([0-2][1-9]|3[0-1])$"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
是勇敢
2012-04-01 · 希望快乐渡过第一天。
是勇敢
采纳数:914 获赞数:1799

向TA提问 私信TA
展开全部
<?php
$str="2010-12-31";
$pattern="/^[0-9]{4}-[1-12]{1,2}-[1-31]{1,2}$/";
/*方法二*/
$pattern2="/^\d{4}-\d{1,2}-\d{1,2}$/";
preg_match_all($pattern,$str,$arr);

echo empty($arr[0][0])?"非法合法":"合法日期";
?>

给你提供了2种方法,你可以看看,再有问题,来找我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式