你能帮我验证一个毛里求斯的网卡。
[1 capital letter][dateofBirth][6 numbers][1 capital letter]
注意:出生日期格式:ddmmyy
我试过这个:
/^[A-Z]{1}[0-9]{12}[A-Z]{1}$/
但我如何验证NIC中的出生日期?谢谢
答案 0 :(得分:3)
如果您想验证日期,那么只需使用正则表达式,您就会很难。但是,幸运的是,PHP具有checkdate功能。你只需要提取日,月和年,这应该很容易,但会稍微改变你的正则表达式。不要忘记在每个元素(日,月,年)周围加上括号,以便能够检索它们。
如果我没弄错的话,你的正则表达应该是这样的:
/^[A-Z]([0-9]{2})([0-9]{2})([0-9]{4})[0-9]{6}[A-Z]$/
然后检查日期,所以:
preg_match('/^[A-Z]([0-9]{2})([0-9]{2})([0-9]{2})[0-9]{6}[A-Z]$/', 'D160289784495A', $match);
var_dump(checkdate($match[2], $match[1], $match[3]));
答案 1 :(得分:0)
不适用于日期,年份和月份的范围。
您无法使用正则表达式简单地检查月,日和年的范围。为此你将使用一些库函数。以下正则表达式将执行验证格式的NIC 的初步工作。之后继续检查日期的有效性。
此正则表达式应检查格式^[A-Z]\d{12}[A-Z]$
<强> Regex101 Demo 强>
请注意您的格式
[1 capital letter][dateofBirth][6 numbers][1 capital letter]
由于出生日期格式为ddmmyy
,因此仅计为6个数字,因此您的格式实际上就是这样
[1 capital letter][12 numbers][1 capital letter]