日付を検証するために、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)){
正規表現でスラッシュをエスケープしなかったため、インタープリターは2番目のスラッシュのみを読み取り、残りはすべて修飾子であると想定します。(
修飾子が存在しないため、正規表現が壊れます。
正規表現を使用してこれを困難にする理由-代わりにstrptimeを使用してください。