运行 moment.js,2.2.1
moment("2010-10-319", ["YYYY-MM-DD"]).isValid()
...返回true
,并且 moment 对象将设置为 2010 年 10 月 31 日。解析器似乎去除了任何类型的无关字符:
moment("2010-10-31a", ["YYYY-MM-DD"]).isValid(); // true
更奇怪的是,如果您添加额外的格式选择,那么“剥离”将仅限于一个字符!(不应该对格式字符串测试进行 ORed 吗?)
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 (!!!)
这种行为是设计使然吗?我不明白为什么。
编辑:一位评论者发现了另一种情况,其中一个以外的额外字符确实被剥离了:
moment("2010-10-319qr", ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD"]).isValid(); // true (!)
这是在行动: http: //jsfiddle.net/grahampcharles/r42jg/6/(更新了新案例)