2015-05-18 66 views
-2

我是JavaScript新手。我正在修復其他人編寫的錯誤。我看到的驗證碼在JavaScript爲:在JavaScript中驗證日期時間

function validateTime(str) { 
    var pattern = new RegExp(/^(([0-9])|([0-1][0-9])|([2][0-3])):(([0-9])|([0-5][0-9]))$/); 
    if (pattern.test(str)) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

但它簡化版,驗證時間: - 22-05-2015

如何能不能做到?

+0

目前還不清楚您是否正在驗證日期或時間:主題「* DateTIme *」,名爲「* validateTime *」的函數,文本:「* ...不驗證時間*」,例如:「* 22 -05-2015 *「,這是一個日期。 – RobG

+1

可能是[*如何驗證日期?]的副本(http://stackoverflow.com/questions/5812220/how-to-validate-a-date),但也許不是... – RobG

回答

1

您的正則表達式驗證時間,而不是日期。要檢查日期您的格式,使用:

var pattern = new RegExp(/^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-(19|20)\d\d$/); 

你可以在這裏檢查此模式:

https://regex101.com/r/kB5nV2/1

+0

非常感謝!工作完美! –

+1

@AlfonsoGarnett謝謝,的確,我省略了這個斜線,已經把它放回原位。至於分隔符,我假設OP需要這種格式,確保它可以被增強以捕獲更多格式。 –

+1

@ n-dru,沒問題,夠公平!普拉卡什,如果你的問題解決了,你應該選擇一個答案。 –

1

可以使用Date對象的parse的方法來驗證一個日期字符串。 然後,您可以檢查Date.parse(str)的值是否等於"Invalid Date"以查看它是否格式錯誤。根本不需要正則表達式。

+1

只有當字符串的格式被正在使用的瀏覽器中的Date函數正確解析時纔有效。在ES5之前,這完全取決於實施。現在它**應該**適用於ISO 8601格式日期,但不一定。 OP中的格式將被當前使用的瀏覽器區別對待。 – RobG

0

function parseDate(str) { 
 
    var m = str.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/); 
 
    return (m) ? new Date(m[3], m[2]-1, m[1]) : null; 
 
}

功能validateTime(STR)代碼中使用的是時間的驗證。日期驗證請嘗試使用parseDate(str)