2013-11-01 113 views
0

有什麼不對的的preg_match錯誤未知的修飾詞 '('

public static function validaDataHoraBR($data_hora){ 
    $pattern = "/^([1-9]|0[1-9]|[1,2][0-9]|3[0,1])/([1-9]|1[0,1,2])/\d{4} ([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}(:([0-5][0-9])){1,2}$/"; 
    return (preg_match($pattern, $data_hora)) ? array(true) : array(false,' não é uma data e hora no formato BR!<br>'); 
} 

這種模式驗證這一點 - 20/08/2011 21:00:00

錯誤:消息:的preg_match()函數在正則表達式未知的修飾 '('

+3

爲什麼要使用正則表達式來驗證日期? [使用'DateTime'類代替](http://stackoverflow.com/a/19271434/1438393)。 –

回答

3

逃逸/

"/^([1-9]|0[1-9]|[1,2][0-9]|3[0,1])\/([1-9]|1[0,1,2])\/\d{4} ([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}(:([0-5][0-9])){1,2}$/" 
#         ^    ^

:.preg匹配。否則,/被識別爲正則表達式的結尾。

或者使用不同的分隔符:

"#^([1-9]|0[1-9]|[1,2][0-9]|3[0,1])/([1-9]|1[0,1,2])/\d{4} ([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}(:([0-5][0-9])){1,2}$#" 
+0

'+ 1'。或者,您可以使用不同的分隔符。 :) –

+0

@AmalMurali,我補充說。感謝您的評論。 – falsetru

相關問題