正则表达式验证日期的方法有哪些?

作者&投稿:俟帝 (若有异议请与网页底部的电邮联系)
~ 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)))


...前一年五月一日(含)以前的日期,如何设置表达式?
要设置Access表中时间字段的有效性规则,确保只能输入系统日期前一年五月一日(含)以前的日期,可以在“有效性规则”字段中输入以下表达式:=DateSerial(Year(Date())-1,5,1)这个表达式通过减去一年的年份,然后指定月份为5,日期为1,实现了日期限制。简单来说,用户在输入日期时,系统会自动验证是否...

Access数据库验证规则怎么设计?
假设这个字段叫月份,在设计表字段的时候,月份字段的验证规则输入: Left([月份],2)="8月" Or Left([月份],2)="9月"。使用验证规则输入数据时,可以在 Access 桌面数据库中审查或验证数据。 表达式生成器有助于正确地对规则进行格式设置。 可在表格设计或表格数据表视图设置验证规则。

C# 如何判断一个字符串是不是日期型数据?
if (DateTime.TryParse(date, out dt)){ Console.WriteLine(dt);} else { throw new Exception("不是正确的日期格式类型!");} 正则可真是没有你用try来的效率高,而且正则只能用来判断指定的字符串是否符合一种格式规范,而日期还需要判断闰年,闰月等等非常复杂。所以,对于转换日期,正则表达式是...

怎么用正则表达式筛选身份证号码
身份证号码说明居民身份证号码,正确、正式的称谓应该是“公民身份号码”。根据【中华人民共和国国家标准 GB 11643-1999】中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一...

VB中的IsDate(txtdata)是什么意思?
语法 IsDate(expression)必要的 expression 参数是一个 Variant,包含日期表达式或字符串表达式,这里的字符串表达式是可以作为日期或时间来认定的。说明 如果表达式是一个日期,或可以作为有效日期识别,则 IsDate 返回 True;否则返回 False。在 Microsoft Windows 中,有效日期的范围介于公元 100 年 1 月...

有关正则表达式的问题:将中文字符串中的日期提取出来
为啥我可以 不加L的话,保存的是本地编码:简体中文系统上保存的就是GBK,繁体中文上保存的就是Big5,日语系统上保存的就是ShiftJIS。加L的话,字符串类型变成wchar_t*,保存的是UTF16(还是UCS2我不知道……前者似乎是支持可变长的,不过我没见过它保存成可变长的过),所有系统上都是一样的编码。

...前一年五月一日(含)以前的日期,如何设置表达式?
有效性规则为只能输入系统日期前一年五月一日(含)以前的日期设置表达式:“有效性规则”填写 <=DateSerial(Year(Date())-1,5,1)。声明一个给动态链接库中的过程传递一个空指针参数的Access Basic函数示例如下:Declare FunctionWriteProfileStringLib "Kernel"(ByVal lpApplicationName As Any, ByVal ...

汽车玻璃如何查看生产日期?
车窗玻璃的左下方或右下方会有一块编码,倒数第一排有一个数字和几个黑点,这些字符代表的就是玻璃的生产日期。编码上的数字代表生产年份,黑点代表玻璃的生产月份。玻璃的生产年份应结合汽车的出厂日期来看:例如编码倒数第一排的数字为8,而汽车出厂日期在2007年或2008年,则可推算出玻璃的生产年份为...

跪求ASP代码: 根据系统日期显示图片.
date1, date2: 必选。日期表达式。用于计算的两个日期。firstdayofweek: 可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。firstweekofyear: 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”...

vb 时间相差计算方法
DateDiff 函数语法中有下列命名参数:部分 描述 interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔 Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。firstweekofyear 可选...

汉阳区13170555976: 谁帮我写个验证日期的正则表达式 -
闫潘盐酸: /^(19|20)\d{2}-(0?\d|1[012])-(0?\d|[12]\d|3[01])$/;<br>这个是1900-2099,简单验证1-12月,1-31日,对于2月30这样的不管.如果都验证,这个正则表达式会很长,你看懂这个自己就会改了.例如:<br><html><br><body><br><script language="...

汉阳区13170555976: 怎么用正则表达式来验证日期啊 (yyyy - MM - dd) -
闫潘盐酸: 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>用正则...

汉阳区13170555976: 合法的日期怎样用正则表达式描述 -
闫潘盐酸: 合法日期的格式太多了.举个例子:要匹配2015-11-11这样的格式 正则表达式:\d{4}-\d{1,2}-\d{1,2} \d表示匹配数字,\d{4}表示匹配4位数字,\d{1,2}表示匹配1-2位数.如果需要更精确的判断,可以把月份换成1[0-2]|[1-9]表示只能是1-12,日期同理.但是建议将这种判断放到程序代码里,因为正则表达式只擅长匹配,应该将判断交给代码.同理4/23/2015这样的格式,可以用\d{1,2}/\d{1,2}/\d{4}匹配.如果需要同事匹配这两种格式,可以在中间加 | 号,表示或者.\d{4}-\d{1,2}-\d{1,2}|\d{1,2}/\d{1,2}/\d{4}

汉阳区13170555976: 求:正则表达式验证日期 YYYYMMDD HH
闫潘盐酸: <html><br>用正则表达式对日期字符串进行验证:<br><pre><br>说明:<br>1:日期格式为,如:2008/8/8 12或是2008/08/08 23都是正确的.<br>2:可以对0000~9999年中的任一天的日期进行合法性验证.<br>3:对于闰年时2月有29号此种...

汉阳区13170555976: java用正则表达式判断字符串是不是时间 -
闫潘盐酸: 具体代码如下:1 public static boolean isValidDate(String str) {2 boolean convertSuccess=true;3// 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;4 SimpleDateFormat format = new SimpleDateFormat("yyyy/MM...

汉阳区13170555976: 如何用javascript中的正则判断日期
闫潘盐酸: 最简单的正则 如 : \d{4}-\d{2}-\d{2} 但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题..... 对于日期的有效范围,不同的应用场景会有所不同.MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:...

汉阳区13170555976: java中如何判断输入的日期是否合法? -
闫潘盐酸: java.text.DateFormat dateFormat= new java.text.SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH); dateFormat.setLenient(false); java.util.Date timeDate = dateFormat.parse(dateString); //转换为util类型 看到dateFormat.setLenient(false);没有,设定其为false就是强制判断是否非法日期,不让系统自动转换,否则2月31号系统会自动转换为3月2号或者3号.

汉阳区13170555976: 两个正则表达式1.关于合法性验证年份的正则表达式,2.关于验证月份的正则表达试 -
闫潘盐酸: 要看你用的年份在什么场合了,简单验证的话就是19/20开头的四位数字:年份:/^(19|20)\d{2}$/ 月份:/^([1-9]|1[0-2])$/

汉阳区13170555976: Java中如何用正则表达式找出各种表达形式的日期 -
闫潘盐酸: package tool;import java.util.regex.Matcher; import java.util.regex.Pattern;public class StringCruncher {public static void main ( String[] args ){String str = "注意我这里说2011-09-13的是找出,不是验证什么格式之类的.比如说str1=\"你好...

汉阳区13170555976: 请问asp.net如何验证日期时间是否有效? -
闫潘盐酸: 用 正则 判断是最好的 其次是在后台 尝试用DateTime.TryParse 转换一下

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网