日付の形式をdd/mm/yyyy
とdd.mm.yyyy
の形式で検証するために、以下のコードを使用しています。日付の区切り文字と一致する正規表現
function validateDate(date){
var matches, d, m, y, cDate, format, dateFormatObj;
dateFormatObj = { format: /^(\d{2})[./](\d{2})[./](\d{4})$/, monthPos: 2, datePos:1, yearPos:3}
format = dateFormatObj.format;
matches = format.exec(date);
d = matches[dateFormatObj.datePos];
m = matches[dateFormatObj.monthPos] - 1;
y = matches[dateFormatObj.yearPos];
cDate = new Date(y, m, d);
return cDate.getDate() == d && cDate.getMonth() == m && cDate.getFullYear() == y;
}
alert(validateDate('22/05/2017'))
これは、基本的な日付を検証するために問題なく動作します。
私が修正しようとしていたのは、月、日、年の値の間の区切り記号(/または)が異なる場合、それを無効にする必要があるということです。
正規表現のフォーマットを/^(\d{2})[./](\d{2})\1(\d{4})$/
に変更したのは、基本的に指定したキャプチャされたグループと同じものを使用することでしたが、これはうまく動作していないようです。私はいくつかの記事を読んだが、何かが欠落しているようだ。この仕事をするために私は何ができますか?
JSフィドル - https://jsfiddle.net/90dstrx5/
が更新フィドルある - https://jsfiddle.net/90dstrx5/1/。両方の異なる形式を使用して、一致するものがあるかどうかを確認します。 – Pugazh
@Pugazh私はそれが動作するとは思わない。 "22/05.2017"と日付を渡すと、エラー – whyAto8
が返されます。そのエラーは無効な日付のためです。 '22/05.2017'は有効な日付形式ですか? – Pugazh