2011-08-31 254 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圣球... –