在 PHP 中创建 MM/DD/YYYY 日期正则表达式
本教程将演示在 PHP 中为 mm/dd/yyyy
日期格式创建正则表达式的方法。
在 PHP 中创建 MM/DD/YY
日期正则表达式
我们可以使用正则表达式根据表达式中应用的规则来验证用户输入。我们可以使用正则表达式验证任何输入,我们甚至可以使用正则表达式验证 mm/dd/yyyy
日期格式。
我们可以创建一个正则表达式并将其存储在一个变量中。我们将使用 preg_match()
函数通过正则表达式测试随机日期格式输入。
日期格式 mm/dd/yyyy
的正则表达式模式如下所示。我们将详细讨论它。
~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~
正则表达式模式应该始终有一个正确的分隔符。此处,~
符号是围绕模式的分隔符。
接下来,我们必须在 mm/dd/yyyy
中写入月份的格式。
月份以 01-12
的格式表示。因此,月份的第一个数字可以是 0
或 1
,所以我们写 0[1-9]
表示从 01-09
开始的月份。括号内的 1-9
表示写在 0
之后的数字。
同样,我们只能写 10
、11
和 12
表示月份,从 1
开始。因此,我们在 1
的括号内写了 012
为 1[012]
。
我们使用|
符号来实现逻辑 OR
。所以我们用它来分隔规则为 (0[1-9]|1[012])
。
最后,我们用括号将模式括起来以指示部分的结束。
接下来,我们必须以 mm/dd/yyyy
格式设置分隔符规则。上面的模式允许分隔符 -
、/
和 .
。
现在,我们写了几天的模式。天数是 1-30
,所以天数 01-09
可以写成 0[1-9]
,10-29
可以写成 12[0-9]
,以及天数 30-31
可以写成 3[01]
。
我们对日期之后的分隔符使用相同的规则,格式为 mm/dd/yyyy
。
我们将 19|20
写为年份的前两位数字,这意味着年份只能从 19
和 20
开始。我们在 19|20
之后使用模式\d\d
来表示 19
或 20
之后的任何两位数字。
这就是上述正则表达式的工作原理。我们现在可以使用上面的正则表达式检查一些测试日期格式。
为此,创建一个变量 $reg
并将我们上面写的正则表达式存储在其中。接下来,创建一个数组 $dates
并存储这些随机日期格式。
['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865']
然后,使用 foreach
循环将 $dates
变量循环为 $date
。使用 preg_match()
函数比较 $date
变量和 $reg
变量。
通过这样做,我们可以检查测试输入是否符合 mm/dd/yyyy
格式的正则表达式模式。
示例代码:
$reg = '~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~';
$dates =['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865'] ;
foreach($dates as $date){
if(!preg_match($reg, $date)) {
echo 'the date format '.$date.' is incorrect'."<br>";
} else{
echo 'the date format '.$date.' is correct'."<br>";
}
}
输出:
the date format 03/22/2021 is correct
the date format 22/22/2021 is incorrect
the date format 03\22\2021 is incorrect
the date format 03-22-2021 is correct
the date format 03/22/1865 is incorrect
在这里,第一种格式遵循所有规则。第二种格式不正确,因为月份不能是 22
。
第三个是不正确的,因为我们没有指定 \
分隔符。我们已经指定了 -
分隔符,所以第四个日期是正确的。年份是最后一年的 1800s
,所以它是不正确的。
相关文章
如何在 PHP 中获取时间差的分钟数
发布时间:2023/03/29 浏览次数:183 分类:PHP
-
本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。