用正規表示式判斷時間是否合法

weixin_30788239發表於2020-04-05

用正規表示式判斷時間是否合法

今天正好用到需要對一些字串進行驗證,其中包括資料和時間的驗證,數字部分比較簡單,自己已經完成,可是時間則相當麻煩,於是就去網上搜尋了一番,首先想到的當然是去http://www.regexlib.com看看啦,那裡有大量現成的正規表示式,從它的域名就可以看出來了嘛。


  
  
None.gif"^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))$"

None.gif

  
  
這個正規表示式能夠驗證型別,但要求時間的年月日必須以兩位數表示,看來只能自己去修改這個長長的正規表示式來滿足自己的需要了啊(修改結果見評論,不久發上)。

另外在國內的網站搜尋也看到了一個,但似乎在處理閏年上有點問題,如2004-02-29就無法通過驗證,這裡一併把它們貼出來作為參考吧:

None.gif//判斷YYYY-MM-DD這種格式的,基本上把閏年和2月等的情況都考慮進去了
None.gif
"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$"
None.gif
None.gif
//加了時間驗證的 
None.gif
"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$"

以下是一些比較常用的正規表示式:

"^\d+$"  //非負整數(正整數 + 0) 
"^[0-9]*[1-9][0-9]*$"  //正整數 
"^((-\d+)|(0+))$"  //非正整數(負整數 + 0) 
"^-[0-9]*[1-9][0-9]*$"  //負整數 
"^-?\d+$"    //整數 
"^\d+(\.\d+)?$"  //非負浮點數(正浮點數 + 0) 
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮點數 
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮點數(負浮點數 + 0) 
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //負浮點數 
"^(-?\d+)(\.\d+)?$"  //浮點數 
"^[A-Za-z]+$"  //由26個英文字母組成的字串 
"^[A-Z]+$"  //由26個英文字母的大寫組成的字串 
"^[a-z]+$"  //由26個英文字母的小寫組成的字串 
"^[A-Za-z0-9]+$"  //由數字和26個英文字母組成的字串 
"^\w+$"  //由數字、26個英文字母或者下劃線組成的字串 
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址 
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url 


轉載於:https://www.cnblogs.com/CarreyWu/archive/2011/08/02/2125244.html

相關文章