1

次のパターンに一致する正規表現が必要です-

mm/dd/yyyy

次の日付エントリは検証に合格する必要があります。

  • 2012/05/03
  • 2012 年 5 月 3 日
  • 2012 年 5 月 3 日
  • 2012 年 5 月 3 日

また、上記を検証した後、上記の日付をオブジェクトregexに変換する最良の方法は何ですか?stringDate

4

4 に答える 4

1

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のようなライブラリを使用する必要があります。

于 2012-10-17T11:33:36.187 に答える
0

これはそれを行う必要があります:

((?:[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 から取得)

こちらのリンクもご覧ください。

于 2012-10-17T11:32:27.823 に答える
0
"/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/"

リンク: Javascript 日付正規表現 DD/MM/YYYY

于 2012-10-17T11:36:39.650 に答える
0
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
}
于 2012-10-17T11:41:43.167 に答える