我在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]:未知修饰符'('
任何提示?
答案 0 :(得分:5)
你的模式中有许多未转义的/
:
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...
^^---
答案 1 :(得分:2)
你的正则表达式中有分隔符/
。您需要使用\/
转义它(或者更改您的分隔符,如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)){
答案 2 :(得分:1)
你没有在正则表达式中逃避正斜杠,因此解释器只读取你的第二个正斜杠,并假设其余的都是修饰符。由于(
修饰符不存在,因此正则表达式会中断。
答案 3 :(得分:0)
为什么使用正则表达式让自己变得困难 - 请改用strptime。