php中的正则表达式错误
我在php上使用以下正则表达式来验证日期:php中的正则表达式错误,php,regex,Php,Regex,我在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[012])/([12][0-9]{3})$/i",$date_born)){
但是我得到了下面的错误,不知道为什么,我总是使用“(”和Reg Exps
[function.preg match]:未知修饰符'('
有什么提示吗?您没有在正则表达式中避开正斜杠,因此解释器只读取第二个正斜杠,并假定其余的都是修饰符。因为
(
修饰符不存在,正则表达式中断。您的正则表达式中有分隔符字符/
。您需要使用\/
对其进行转义(或者按照Marc B指出的更改分隔符)
在您的模式中有许多未被替换的
/
:
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...
^^---
为什么要用正则表达式来解决这个问题呢?请改用。谢谢,我避开了内部问题:P@user1511579用于封装regex=bad(IMHO)的双引号。您最终会做一些事情,比如将文字控制字符传递给PCRE而不是转义序列,或者意外地传递变量,这可能会打开一个安全漏洞。
if(!preg_match("/^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[01 etc...
^^---