1

日付フィールドを「検証」しようとしています。許可したいのは、数字と - 文字だけです。

 $born_date=$_POST['date'];
 $goodchars = array("1","2","3","4","5","6","7","8","9","0","-");
 $char_re_good = '/['.preg_quote(join('', $goodchars), '/').']/';
       if (!(preg_match($char_re_good, $born_date))) {
            echo "not ok, contain INVALID chars"
       }else{
            echo "ok, contain valid chars"
       }

「1960」で検索してみたらOK。「asdfg」を検索しようとしても、OK ではありません。しかし、「1960/」を検索すると、出力は問題ありません。理由がわかりません。

ユーザーがフィールドに「0-9」と「-」の文字のみを入力しているかどうかを確認するように変更するのを手伝ってくれませんか。

ありがとうございました

4

3 に答える 3

7

式を「アンカー」する必要があります。つまり、文字列 ^ の先頭と文字列 $ マーカーの末尾を挿入します。

 preg_match('/^[0-9-]+$/', $born_date);

ただし、preg_match は日付を検証する方法ではありません。たとえば、上記は「99999999」などを受け入れます

于 2009-12-15T19:58:34.490 に答える
5

user187291 の正規表現は、日付文字のみに一致します。これが必要です。日付を検証する簡単な方法は、次の方法でタイムスタンプに変換してみることstrtotime()です。

if (strtotime($date_str)!==false) {
  // The date is valid.
}
于 2009-12-15T20:03:38.630 に答える
0
$char_re_good = "/^[0-9-]+$/";

試してみてください

于 2009-12-15T19:57:35.867 に答える