日期正規表示式

2021-10-07 22:41:28 字數 2241 閱讀 7491

判斷閏年的規則:

1、能被400整除

2、能被4整除不能被100整除

日期正規表示式的構建思想

平年365天,閏年366天,只有在閏年的時候,2月有29天,其餘年份,2月總是只有28天,而其餘月份是的天數是一樣的。那麼,只需要對所有的年份(包括閏年)構建出2月只有28天(其餘月份正常表示)的正規表示式,(如果此時能夠識別出,那麼日期就是正常的,如果不能識別出,還有一種可能是閏年的2月29日),所以最後只需用閏年的2月29日的正規表示式與前面的正規表示式相或即可,最後識別不出來的就不是正確的日期。

ordinaryyearregular = ([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])
bigmonthregular = ((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))
smallmothregular = ((0[469]|11)-(0[1-9]|[12][0-9]|30))
februaryexceptforthelastdayregular = (02-(0[1-9]|1[0-9]|2[0-8]))
februarythelastdayregular = (02-29)
leapyearregular1 = (([0-9])(0[48]|[2468][048]|[13579][26]))
leapyearregular2 = ((0[48]|[2468][048]|[3579][26])00)
//這裡只是對日期的簡單表示,並不是真正的**(其中中括號是為了和小括號區分,別看花了眼)

[ordinaryyearregular + "-" + (bigmonthregular | smallmothregular | februaryexceptforthelastdayregular)]

| [(leapyearregular1 | leapyearregular2) + "-" + februarythelastdayregular ]

// 所有的年份

private ordinaryyearregular: string = '([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])';

// 大月

private bigmonthregular: string = '((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))';

// 小月

private smallmothregular: string = '((0[469]|11)-(0[1-9]|[12][0-9]|30))';

// 二月前28天

private februaryexceptforthelastdayregular: string = '(02-(0[1-9]|1[0-9]|2[0-8]))';

// 閏年二月第29天

private februarythelastdayregular: string = '(02-29)';

// 能被4整除不能被100整除

private leapyearregular1: string = '(([0-9])(0[48]|[2468][048]|[13579][26]))';

// 能被400整除

private leapyearregular2: string = '((0[48]|[2468][048]|[3579][26])00)';

// 日期的正則化表示

private dateregularexpression: regexp = new regexp('(' + this.ordinaryyearregular + '-('

+ this.smallmothregular + '|' + this.bigmonthregular + '|'

+ this.februaryexceptforthelastdayregular + '))|((' + this.leapyearregular1 +

'|' + this.leapyearregular2 + ')-' + this.februarythelastdayregular + ')');

正規表示式 日期

1 日期範圍 datetime 值型別表示值範圍在公元 紀元 0001 年 1 月 1 日午夜 12 00 00 到公元 c.e.9999 年 12 月 31 日晚上 11 59 59 之間的日期和時間。2 閏年 關於公曆閏年是這樣規定的 地球繞太陽公轉一周叫做一回歸年,一回歸年長365日5時48分...

日期的正規表示式

public static void datecheck 02468 048 13579 26 s 0?13578 1 02 s 0?1 9 1 2 0 9 3 01 0?469 11 s 0?1 9 1 2 0 9 30 0?2 s 0?1 9 1 2 0 9 d 02468 12 35679 1...

正規表示式 日期 驗證

日期的格式是yyyy mm dd 1 6 9 2 9 d d 0?13578 1 02 0?1 9 12 d 3 01 1 6 9 2 9 d d 0?13456789 1 012 0?1 9 12 d 30 1 6 9 2 9 d d 0?2 0?1 9 1 d 2 0 8 1 6 9 2 9 d...