-4

日付を検証する次の正規表現があります。

//are not both dates
if (!methods._isDate(first[0].value) || !methods._isDate(second[0].value)) {
    return options.allrules[rules[i]].alertText +   
           options.allrules[rules[i]].alertText2;
}

以下の正規表現:

_isDate: function (value) {
             var dateRegEx = new RegExp(/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$|^(?:(?:(?:0?[13578]|1[02])(\/|-)31)|(?:(?:0?[1,3-9]|1[0-2])(\/|-)(?:29|30)))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(?:(?:0?[1-9]|1[0-2])(\/|-)(?:0?[1-9]|1\d|2[0-8]))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(0?2(\/|-)29)(\/|-)(?:(?:0[48]00|[13579][26]00|[2468][048]00)|(?:\d\d)?(?:0[48]|[2468][048]|[13579][26]))$/);
             return dateRegEx.test(value);
         },

しかし、これは mmddyy のように見え、私の日付は常に ddmmyy です。

この正規表現を書き直すことはできますか? これをチェックしてください。

4

1 に答える 1

1

DDMMYYYYの場合、オプションで日と月、区切り記号または、年-を先頭に付け、 、または月内の日の有効性をチェックせずに、次のようにします。0/-1900209929.30.31.

/^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[012])[\/\-](19\d{2}|20\d{2})$/

2 桁の年形式のみを使用するには、次のようにします。

/^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[012])[\/\-](\d{2})$/
于 2012-06-29T13:36:34.440 に答える