1

preg_match_allを使用して、大文字で始まる日付と単語をチェックしています。問題は日付にあります。これは、正規表現テスターでは、この正規表現は問題ないと言っているのですが、phpスクリプトでは正しく行われていないため、私のパターンは次のとおりです。

$pattern = "#(((0[1-9]|[12][0-9]|3[01])([\/\.\\\-])((0[1-9]|1[012])\11)?)(\d\d\d\d|\d\d))+|([A-Z][a-z]+)(\s[A-Z][a-z]+)*#";

そして私はそれをこれと一致させたい:「12.10.1990」と「12.10.90」

ご協力いただきありがとうございます!

4

1 に答える 1

5
$string = '12.10.1990 as well as 12.10.90';

preg_match_all('/[01]\d\.[0-3]\d\.\d{2,4}/', $string, $match);

print_r($match);

正規表現の日付一致部分にこのパターンを使用します。とにかく、車輪を再発明しようとしています。日付が有効かどうかをより適切に判断するのに役立つ組み込みの PHP 関数があります。

次の例のように、explode() を使用して、各セグメントをこの関数に入れます。

$string = '12.10.1990';
//$string = '12.10.90';

$string = explode('.', $string);
var_dump(checkdate($string[0], $string[1], $string[2]));
于 2012-12-15T01:47:49.403 に答える