【发布时间】:2013-11-15 09:47:20
【问题描述】:
我正在尝试制作日期正则表达式验证器。我遇到的问题是我正在使用 "date" 类型的输入字段,这在 Chrome 中就像一个魅力;它在 Chrome 中打开了一个类似日历的功能,但在其余部分它什么也不做,所以我决定手动输入其余部分的日期。
这是我的错误信息(我正在寻找 YYYY-MM-DD 格式):
$date_regex ='#^(19|20)\d\d[\- /.](0[1-9]|1[012])[\- /.](0[1-9]|[12][0-9]|3[01])$#';
$hiredate = $_POST['hiredate'];
if (!preg_match($date_regex, $hiredate)){
$errors[] = 'Your hire date entry does not match the YYYY-MM-DD required format.';
}
我知道有很多关于这个的例子,但我已经尝试了 20 个,但我无法解决它。也许我错过了什么。
这里是输入字段,如果有点相关:
<input type="date" name="hiredate" />
【问题讨论】:
-
为什么不按 - 分解并使用 checkdate() 代替?
-
有标准程序吗?我在另一个帖子中找到了它,但对我不起作用。仅供参考,我想让他们像 YYYY/MM/DD 或 YYYY.MM.DD 或 YYYY-MM-DD 一样插入。为了不过度约束他们。
-
提供 3 个单独的
<input>框是否更容易,并带有适当的最大长度和仅数字验证,这些验证在后端连接成正确的格式?如果一个人keypressed2 位数,您可以在每个输入框中添加侦听器以转到下一个。用户不会对您需要什么格式表示支持,如果这不是他们个人的原生格式,您充其量只会让他们感到沮丧 -
我实际上是这么想的,但是记住有些月份有 28-29 天,而其他月份有 31 天,这不会让事情变得更复杂吗?我的猜测是正则表达式没问题,因为我在很多帖子中都看到过它。也许我的错误处理都是错误的......但你可能有一点。
-
我会建立一个逻辑,上面写着
If insert fails then slap user in face...我希望一个人知道不要在日期字段中越界,否则你可能不应该雇用他们:)
标签: php regex date preg-match