【发布时间】:2020-10-16 07:52:35
【问题描述】:
我正在将下一个模式用于 HTML (0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d。
我希望 PHP preg_match() 使用完全相同的模式进行服务器端验证。有人知道吗?有没有什么转换器之类的。
该模式适用于 12/12/1999 和 12-12-1999,如您所见,它只允许 1900 年和 2000 年。
我在网上搜索了该模式,但我找不到 12/12/1999 和 12-12-1999 + 1900 和只有 2000 年的组合模式。
有人知道一个好的网站来转换这些东西或制作 preg_match PHP 或 HTML 模式吗?
【问题讨论】:
-
它不适用于 preg_match 吗?您是否尝试将
~作为分隔符而不是/? -
它是一个日期,只需将
if(DateTime::createFromFormat('d/m/Y', ..作为验证的一部分,调用两次并不昂贵,并且可以支持任何格式 -
您需要
preg_match('~^(?:0?[1-9]|[12][0-9]|3[01])([- /.])(?:0?[1-9]|1[012])\1(?:19|20)\d{2}$~', $text),否则您将匹配较长字符串中的模式,并且您可能会匹配12-12.1988,例如分隔符不一致的字符串。 -
@WiktorStribiżew 感谢您的帮助 Wiktor,但它在下一个解决方案中起作用。
preg_match('/(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.](19|20)\d\d/', '12-12-9999', $matches); -
那么,您想在
323434512-12-99993423534中匹配12-12-9999?
标签: php preg-match