[英]date time of regular expression
我寫了一個正則表達式來確定日期時間(假設每個月有31
天,而年份只包含1900
至2099
)
^(((((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.