2011-08-31 253 views
0

我有一個表單,用戶輸入信息。我希望能夠檢查他們輸入到我的文本字段中的日期是否爲mm/dd/yy格式。用戶輸入,驗證日期格式是否正確

如何查看用戶輸入的mm/dd/yy格式的內容,如果不正確,則顯示一個錯誤,告訴他們輸入的日期必須是mm/dd/yy格式。

由於

+2

驗證格式可以在客戶端用'「和/或在PHP中完成。並斷言它也是一個有效的日期,使用'strtotime()'並探測它是否成功。 – mario

回答

0
$date='12/12/2011'; 
$reg="#^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$#"; 

if (preg_match($reg, $date)) { 
    echo "GOOD date."; 
} else { 
    echo "BAD date."; 
} 
1

我肯定還有其他的方法來做到這一點,但使用explode(),輸入的數據,通過使用「/」作爲分割字符分離成[希望]三個條目的陣列。

然後檢查第一個值是否在1..12範圍內,第二個值是否在1..31範圍內,最後一個是否在範圍0..99內。

更復雜的檢查將確保每個月都不超過適當的天數(對於額外信用,允許在02月29日,當且僅當年份被4整除(是的,這種混亂在所有的世紀裏,前兩位數字不能被4整除,但是你的年份格式限制爲yy))。

如果輸入太短(我會說5個字符允許1/1/1)或太長(超過8個字符),它是無效的。

更好的格式是不需要需要分隔符,只要確保該字符串是6個字符長,所有數字,並且每對數字都在您的可接受範圍內。

+0

'只要確保字符串長度爲6個字符 - 你的意思是8個字符?請記住所謂的千年所謂的bug ... – DaveRandom

+0

@DaveRandom - OP *特別*表示日期格式爲「mm/dd/yy」 - 這一年只有兩位數字:) – warren

+1

夠公平的,不是你的錯誤如果世界結束,我們都因爲別人的思想而死亡,我猜想... ...: - D – DaveRandom

2

更好的方法是使用date picker或三個<select>,以確保用戶別無選擇,只能輸入正確的日期格式。

+2

或者,也許只是'',讓瀏覽器或JS墊片處理泰迪歐部分。 – mario

+0

@mario整潔,有一部分HTML5我還沒有發現... – DaveRandom

+0

@mario聖球... –