正規表示式校驗年份

2021-09-08 12:52:30 字數 1712 閱讀 7145

1>.首先需要驗證年份,顯然,年份範圍為

0001 - 9999,匹配yyyy的正規表示式為:

[0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9]

其中[0-9] 也可以表示為 \d,但 \d 不如 [0-9] 直觀,因此下面我將一直採用

[0-9]

用正規表示式驗證日期的難點有二:一是大小月份的天數不同,二是閏年的考慮。

對於第乙個難點,我們首先不考慮閏年,假設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][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])-(((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])(0[48]|[2468][048]|[13579][26])

2、能被400整除的年份。能被400整除的數肯定能被100整除,因此後兩位肯定是00,我們只要保證前兩位能被4整除即可,相應的正規表示式為:(0[48]|[2468][048]|[3579][26])00閏年的2月份有29天,因此匹配閏年日期格式為yyyy-mm-dd的正規表示式為(([0-9])(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29最後,將平年和閏年的日期驗證表示式合併,我們得到最終的驗證日期格式為yyyy-mm-dd的正規表示式為:(([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])-(((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])(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][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9]))|(29/02/(([0-9])(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00)))

正規表示式校驗

這兩天在寫專案的js api,要對各種字段進行js校驗。用到了jquery.validator,因為jquery內建的validator方法較少,大多數還要自己手動做校驗,所以用到的正規表示式比較多,這裡整理一下,做個筆記。只能包括英文本母 數字和下劃線 a za z0 9 密碼 大於6位的字母與數...

正規表示式校驗字元

資料校驗在我們開發過程中是乙個很重要的過程,可以過濾很多不合法的資料,避免一些非法資料產生不好的問題。在開發中,最經常使用的就是正規表示式的校驗,以下我們來看一看正規表示式的校驗 舉個例子,關於正數,負數,小數的校驗 test public void test1 public void checkn...

常見的 正規表示式 校驗

常見的 正規表示式 校驗 qq號 手機號 email 是否是數字 去掉前後空格 是否存在中文 郵編 身份證 url 日期格式 ip var myregexp var reg 1 9 0 9 gim if reg.test str else 檢查字串是否為合法手機號碼 isphone function...