次のパターンに問題がありますか?preg_matchを使用した正規表現
~(?P<day>[1-9]{1,2})[.](?P<month>[1-9]{1,2})[.](?P<year>[0-9]{1,4})~
私は
21.12.2012
21.8.2012 // not 21.08.2012
..フォーマットを以下のようにしたいが、それはまたことができます。..
2012.12.12
12.12.12
...
ありがとう助けてください、 のHardik
次のパターンに問題がありますか?preg_matchを使用した正規表現
~(?P<day>[1-9]{1,2})[.](?P<month>[1-9]{1,2})[.](?P<year>[0-9]{1,4})~
私は
21.12.2012
21.8.2012 // not 21.08.2012
..フォーマットを以下のようにしたいが、それはまたことができます。..
2012.12.12
12.12.12
...
ありがとう助けてください、 のHardik
anchor正規表現を忘れました。また、あなただけの4桁の年を許可する場合、あなたはそれを明示的に行う必要があります。
~^(?P<day>[0-9]{1,2})[.](?P<month>[0-9]{1,2})[.](?P<year>[0-9]{4})$~
^
と$
は、あなたの正規表現が一致していないことを保証する、文字列の先頭と末尾に一致します12.12.12
部分文字列は2012.12.12
です。あなたが先行ゼロを禁止したい場合は
、もちろん
~^(?P<day>[1-9][0-9]?)[.](?P<month>[1-9][0-9]?)[.](?P<year>[0-9]{4})$~
を使用し、これは(99.99.9999は、この正規表現を渡します)チェック任意の正気を行いますが、有効な日付をチェックすると、何かyou shouldn't be doing with a regex anywayではありません。
はこれを試してみてください:
$regex = '#^[0-9]{2}.[1-9][0-9]{0,1}.[0-9]{4}$#';
それは2つの最初の形式ではなく、他人を許可する必要があります。
先行ゼロを許可したくないのですか?月の部分だけ、または日の部分だけ?あなたの仕様はかなり曖昧です。また、なぜ先行ゼロを最初に許さないのでしょうか? –
はいまた昼間の部分で... 03.12.2012は許されません。 – hardik