簡體   English   中英

使用正則表達式來驗證javascript中mm / dd / yyyy格式的短日期和長日期

[英]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/000029/02/NON_LEAP_YEAR

因此最好使用庫函數進行此驗證。

我能夠找到一個這樣的庫: datajs

這是一個稍微更健壯的正則表達式,它將嘗試過濾掉一些錯誤的日期:

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

輸入(如在ruular所示

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/yyyymm-dd-yyyy ,但是mm-dd/yyyy無效)。

這仍然會花費一些不好的日期(例如02/30/2000),但出於實際目的,它應該足夠好。 這還將把月份,日期和年份分別放在捕獲組1、2和3中。

暫無
暫無

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

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