次のパターンに一致する正規表現が必要です-
mm/dd/yyyy
次の日付エントリは検証に合格する必要があります。
- 2012/05/03
- 2012 年 5 月 3 日
- 2012 年 5 月 3 日
- 2012 年 5 月 3 日
また、上記を検証した後、上記の日付をオブジェクトregex
に変換する最良の方法は何ですか?string
Date
次のパターンに一致する正規表現が必要です-
mm/dd/yyyy
次の日付エントリは検証に合格する必要があります。
また、上記を検証した後、上記の日付をオブジェクトregex
に変換する最良の方法は何ですか?string
Date
split、parseInt、およびDate コンストラクターを使用して、チェックと解析を一度に行う必要があります。
function toDate(s) {
var t = s.split('/');
try {
if (t.length!=3) return null;
var d = parseInt(t[1],10);
var m = parseInt(t[0],10);
var y = parseInt(t[2],10);
if (d>0 && d<32 && m>0 && m<13) return new Date(y, m-1, d);
} catch (e){}
}
var date = toDate(somestring);
if (date) // ok
else // not ok
01/22/2012 ==> Sun Jan 22 2012 00:00:00 GMT+0100 (CET)
07/5/1972 ==> Wed Jul 05 1972 00:00:00 GMT+0100 (CEST)
999/99/1972 ==> invalid
このページの他の回答として、これは 2 月に 31 を詰まらせることはありません。そのため、すべての重大な目的のために、代わりにDatejsのようなライブラリを使用する必要があります。
これはそれを行う必要があります:
((?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))[-:\\/.](?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3})))(?![\\d])
(txt2re.com から取得)
こちらのリンクもご覧ください。
"/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/"
var dateStr = '01/01/1901',
dateObj = null,
dateReg = /^(?:0[1-9]|1[012]|[1-9])\/(?:[012][1-9]|3[01]|[1-9])\/(?:19|20)\d\d$/;
// 01 to 12 or 1 to 9 / 01 to 31 or 1 to 9 / 1900 to 2099
if( dateStr.match( dateReg ) ){
dateObj = new Date( dateStr ); // this will be in the local timezone
}