使用Moment验证MMDDYYYY格式

Bou*_*ory 7 javascript momentjs

我有以下几点。由于某些原因,moment.js无法按预期验证我的日期。当我传递字母时,它会像预期的那样失败,但是当仅使用数字时,它将始终传递。

我正在使用MMDDYYYY格式。如何使用矩来验证MMDDYYYY?谢谢

var dates = "08291975"; //passes as it should
var passed = moment(dates, 'MMDDYYYY', true).isValid();
console.log('should pass ' + passed); //actual output is 'should pass true'

dates = "082919751"; //one digit too many should fail but doesnt
passed = moment(dates, 'MMDDYYYY', true).isValid();
console.log('should not pass ' + passed); //actual output is 'should not pass true'

dates = "0829ssss"; //fails as expected
passed = moment(dates, 'MMDDYYYY', true).isValid();
console.log('should not pass ' + passed); //actual output is 'should not pass false'

dates = "0829197"; //one digit short should fail but doesnt
passed = moment(dates, 'MMDDYYYY', true).isValid();
console.log('should not pass ' + passed); //actual output is 'should not pass true'
Run Code Online (Sandbox Code Playgroud)
<script src="https://rawgit.com/moment/moment/2.2.1/min/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

Vin*_*zoC 4

您可以使用最新版本 (2.24.0) 而不是旧版本 2.2.1 获得预期输出。

这是一个实时示例:

var dates = "08291975";
var passed = moment(dates, 'MMDDYYYY', true).isValid();
console.log('should pass ' + passed);

dates = "082919751"; //one extra digit
passed = moment(dates, 'MMDDYYYY', true).isValid();
console.log('should not pass ' + passed);

dates = "0829ssss";
passed = moment(dates, 'MMDDYYYY', true).isValid();
console.log('should not pass ' + passed);

dates = "0829197"; //one digit missing
passed = moment(dates, 'MMDDYYYY', true).isValid();
console.log('should not pass ' + passed);
Run Code Online (Sandbox Code Playgroud)
<script src="https://rawgit.com/moment/moment/2.24.0/min/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)