我在 php 上使用以下正则表达式来验证日期:
if(!preg_match("/^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/([12][0-9]{3})$/i",$date_born)){
但是我得到了以下错误,不知道为什么,我总是使用“(”和 Reg Exps。
[function.preg-match]: 未知修饰符 '('
有什么提示吗?
您的模式中有许多未转义/
的内容:
if(!preg_match("/^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[01etc...
^---
最简单的是切换到另一个分隔符:
if(!preg_match("#^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[01etc...
^----
或逃避所有内部/
:
if(!preg_match("/^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[01 etc...
^^---
您的正则表达式中有分隔符/
。您需要使用\/
(或更改您的分隔符,正如 Marc B 指出的那样)来转义它。
if( !preg_match("/^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[012])\/([12][0-9]{3})$/i",$date_born)){
你没有在你的正则表达式中转义你的正斜杠,所以解释器只读取你的第二个正斜杠并假设其余的都是修饰符。由于(
不存在修饰符,因此正则表达式会中断。
为什么要用正则表达式让自己变得困难 - 改用strptime。