【发布时间】:2015-07-14 23:14:16
【问题描述】:
我有一个表单不断向用户抛出错误,因为他们不明白他们的生日必须采用 MM/DD 格式。我不是要求年份,但有些人将其输入为 MM/YY,但没有意识到我想要的是 day 而不是年份。
我试图用正则表达式来做这个,但无法弄清楚,所以我写了这个
$ckdate = explode("/", $mySub['Birthday']);
if($ckdate[0]>12 || $ckdate[0]<1){
echo 'Please make sure your birthdate is in a valid format MM/DD, we ask for month and day only';
return;
}
if($ckdate[1]>31 || $ckdate[1]<1){
echo 'Please make sure your birthdate is in a valid format MM/DD, we ask for month and day only';
return;
}
这是最好的方法吗?似乎效率低下。我想知道是否正则表达式是这种方式,还是有一个 PHP 函数可以做到这一点?
提前致谢。
【问题讨论】:
-
你的混合js和php
-
You don't need regex 对于这个,你这样做的方式可能很好。但是,您使用用户不期望的格式造成了这个问题。 You're making them think!
-
2 位数的月份和 2 位数的年份之间存在重叠,两者都可能有效。你怎么能分辨出来?月和日都使用投递箱可能会更好。
-
另一种方法是重新设计表单以提高可用性。例如,您可以输入一个带有“月”和“年”的占位符。永远不要假设用户会以你的方式思考。发现错误固然好,但最好从一开始就防止错误发生。
-
感谢大家的输入。感谢您确认我不需要正则表达式。我确实有一个 jquery datepicker,但它不工作。一旦我重新启用它,它应该会有所帮助,这就是 nomistic 的观点,即首先防止错误发生。但是下面带有 checkdate 的答案也可以用于验证。待机...