2012-06-22 105 views
-3

這個正則表達式有什麼問題?它不會工作正則表達式的日期

var patt = /[0-9]{2}/[0-9]{2}/[1-9]{4}/; 

if(patt.test(document.getElementById('date').value) == false){ 
    document.getElementById("errorTxt").innerHTML = "Error"; 
    return false; 
} 
+0

「這不起作用」太模糊了,說明有用。請說明你期望它做什麼與實際行爲。 –

+3

不知道不JS嚮導,但是這看起來將採取的日期,如91/72/9123爲有效和2001年10月2日爲無效(你甚至不容許在一年0)。有[這裏]看看(http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html),爲什麼正則表達式可能不是最好的出路這個的。 –

+0

你不關心日期驗證,請更正: - ? –

回答

0

你需要在中間轉義/

var patt = /\d\d\/\d\d\/\d{4}/; 

另外,你爲什麼不讓2012年成爲有效的一年?

+0

這將匹配「91/72/9123」。看起來像OP接受: - ? –

0

您需要在模式中間轉義/。讓他們\/

0

正則表達式中使用斜線,因此必須轉義:

var patt = /[0-9]{2}\/[0-9]{2}\/[1-9]{4}/; 

在一個相關的說明,您可以使用\ d來表示任何數字:

var patt = /\d{2}\/\d{2}\/\d{4}/; 
0

,又怎麼能您匹配的年份爲2012[1-9]{4},當0yyyy

使用正則表達式/\d{2}\/\d{2}\/\d{4}/可以拆分日期的數字,但是......

您應該使用JavaScript Date Validation代替。