正規表示式 判斷年月日合法性

2021-09-26 13:58:30 字數 976 閱讀 3612

使用正規表示式判斷年月日是否合法(這裡不考慮閏年2月29日的情況)

判斷型別為 20151206、19551230、20180808類似這種格式的合法性

其實並不很難,主要思考過程,(答案見末尾):

先確定句子結構:(年月日)

年由4位組成,月和日分別由2位組成

1、年:

可以分為19開頭和20開頭,(19開頭|20開頭)

19是固定的,後面兩位數字都是0-9

20是固定的,後面兩位數字從00-19(今年是19年),即[01][0-9],由此得到判斷年的合法性的表示式:

(19[0-9]|20[01][0-9])

2、月(不考慮2月29號閏年的情況):

月分為小月大月2月:結構可以是(小月|大月|2月)

小月由04、06、09、11:(0[469]|11)

小月有30天:([012][0-9|30])

組合起來為:(0[469]|11)(012[0-9|30])

大月直接按照小月改幾個數字即可:(0[13578]|1[02])(012[0-9|3[01]])  【這裡[012][0-9]會匹配到00,需要優化,其實多寫乙個類似列舉的值即可,相當於窮舉了】

2月為:(02([01][0-9]|2[0-8]))

最後把小月、大月、2月三部分填入句子結構,組合起來,然後把年也加進來,就得到下面一串很長的正規表示式:

(19[0-9]|20([01][0-9]))((0[469]|11)([012][0-9]|30)|(0[13578]|1[02])([012][0-9]|3[01])|(02([01][0-9]|2[0-8])))

正規表示式 常用正規表示式驗證輸入合法性(一)

1.去掉字串首尾空格的正規表示式怎麼寫?var str abfhjpo jifpokroi okj vwaiu console.log str abfhjpo jifpokroi okj vwaiu str str.replace s s g,console.log str abfhjpo jifp...

4 已知表示式判斷合法性及求值

成績 10開啟時間 2017年11月24日 星期五 00 00 折扣0.8 折扣時間 2017年12月18日 星期一 00 00 允許遲交 否關閉時間 2017年12月31日 星期日 00 00 題目 給定字尾表示式,計算出該式的值。為簡單起見,用於計算的數字均在0 9之間。輸入 某個四則表示式的字...

判斷顏色是否合法的正規表示式

0 9a fa f 0 9a fa f 意思是 以 開頭,後面是數字和a f的字元 大寫或小寫 這個值是6位或3位。要匹配乙個3為是為了符合css顏色的簡寫規則 abc aabbcc 注意 如果需要進行16位和10位的轉換,比如將顏色值轉成int存在資料庫,如果是6位的顏色沒問題,如果是3位的顏色就...