moment.js la validation de date invalide “2013-10-311”

De course moment.js, 2.2.1

moment("2010-10-319", ["YYYY-MM-DD"]).isValid()

... retourne true, et le moment où l'objet serait fixé au 31 octobre 2010. L'analyseur semble bande étrangères des personnages de toute sorte:

moment("2010-10-31a", ["YYYY-MM-DD"]).isValid(); //true

Curiouser, si vous ajoutez des choix de format, puis le "stripping" est limitée à un seul personnage! (Ne pas les chaînes de format de tests par un ou binaire?)

moment("2010-10-319", ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD"]).isValid(); //true
moment("2010-10-3199", ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD"]).isValid(); //false (!!!)

Ce comportement est-il pas? Je ne reçois pas pourquoi.

EDIT: UN auteur a trouvé un autre cas où des caractères supplémentaires au-delà de l'un sont, en effet, dépouillé:

moment("2010-10-319qr", ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD"]).isValid(); //true (!)

Voici en action: http://jsfiddle.net/grahampcharles/r42jg/6/ (mis à jour avec de nouveaux cas)

Je suis l'aide de rapport ( "2010-10-319qr" , ["MM/DD/YYYY", "MM-JJ-AAAA", "AAAA-MM-JJ"] ); et il donne // vrai.
Tournure intéressante, à savoir le décapage n'est pas cohérente. J'ai mis à jour le violon.

OriginalL'auteur Graham Charles | 2013-09-25