[英]Regular Expression to validate short and long date in mm/dd/yyyy format in javascript
我想驗證日期,可以是短日期格式也可以是長日期格式。 例如:對於某些有效日期。
12/05/2010,12/05/10,12-05-10,12-05-2010
var reLong = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;
var reShort = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{2}\b/;
var valid = (reLong.test(entry)) || (reShort.test(entry));
if(valid)
{
return true;
}
else
{
return false;
}
但是當我嘗試將無效日期設為12/05 / 20-0時,此當前正則表達式失敗
發生這種情況是因為12/05/20
這是您輸入的12/05/20
12/05/20-0
的子字符串)是有效日期。
為了避免子字符串匹配,可以將錨用作:
/^\d{1,2}[\/-]\d{1,2}[\/-]\d{4}$/
但是以上內容再次允許使用無效的日期,例如00/00/0000
和29/02/NON_LEAP_YEAR
。
因此最好使用庫函數進行此驗證。
我能夠找到一個這樣的庫: datajs
這是一個稍微更健壯的正則表達式,它將嘗試過濾掉一些錯誤的日期:
^(1[012]|0[1-9])([\/\-])(0[1-9]|[12]\d|3[01])\2((?:19|20)?\d{2})$
01/01/2001 # valid
10-10-10 # valid
09/09/1998 # valid
00-00-0000 # invalid
15-15-2000 # invalid
日比賽:01到31,月比賽:01-12和年比賽1900-2099。 它還會迫使您輸入一個一致的分隔符(即: mm/dd/yyyy
和mm-dd-yyyy
,但是mm-dd/yyyy
無效)。
這仍然會花費一些不好的日期(例如02/30/2000),但出於實際目的,它應該足夠好。 這還將把月份,日期和年份分別放在捕獲組1、2和3中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.