簡體   English   中英

正則表達式的日期時間

[英]date time of regular expression

我寫了一個正則表達式來確定日期時間(假設每個月有31天,而年份只包含19002099

^(((((0?[1-9]|1[012])[- /.\\](0?[1-9]|[12][0-9]|3[01]))|((0?[1-9]|(1|2)[0-9]|3[01])[- /.\\](0?[1-9]|[1][012])))([- /.\\](19|20)\d{2})))$

日期時間的格式為:

dd-mm-yyyy
mm-dd-yyyy
0m-0d-yyyy
0d-0m-yyyy
m-d-yyyy
d-m-yyyy

除了一件事情,一切都很好。 如果日期時間類似於32-10-2010 ,我認為應該不承認它,但是在正則表達式測試器2-10-2010就已經認識到了。 我想知道是否有任何方法可以修改正則表達式以防止它。

刪除/后,您的RegEx對我有用。 這是一個簡單的Sublime Text RegEx查找/替換:

在此處輸入圖片說明

這是調整后的正則表達式:

^(((((0?[1-9]|1[012])[- /.\\](0?[1-9]|[12][0-9]|3[01]))|((0?[1-9]|(1|2)[0-9]|3[01])[- /.\\](0?[1-9]|[1][012])))([- /.\\](19|20)\d{2})))$

但是更好的解決方案是使用語言本機日期功能。 我想不出一種沒有內置方法來處理這類事情的語言。

例如,使用JavaScript的Date對象或類似的對象...

您所用的有效日期格式格式為:

/^\d{1,2}-\d{1,2}-\d{4}$/

使用RegEx,您只能驗證日期格式 ,而不能驗證正確的日期,因為這是錯誤的做法! 每個月的日子可能不同,所以要寫出好運的方式來考慮吧。

如果您想驗證日期是否正確,請使用您的語言使用其他內置函數。 例如PHP的checkdate等。

試試這個:

^((3[01]|0?[1-9]|[1-2][0-9])-(1[012]|0?[1-9])|((1[012]|0?[1-9])-(3[01]|0?[1-9]|[1-2][0-9])))-(19|20)[0-9][0-9]$

我已經在這里給出了這樣的答案。

此匹配一個無效的日期:29-02-1900,但對於01-01-1900和31-12-2099之間的任何日期都是正確的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM