web-dev-qa-db-ja.com

moment.js isValid関数が正しく機能していません

この質問があります...類似するものは見つかりませんでしたし、moment.jsで時間を検証するこの問題が誰にもなかったことも非常に奇妙に思えます。

moment('03:55', 'HH:mm').isValid(); //true
moment('03:55jojojo', 'HH:mm').isValid(); //true
moment('03:55jojojo', 'HH:mm',true).isValid(); //true

私は何か間違ったことをしていますか?以下に例を示します。

http://jsfiddle.net/vCGAp/145/

70
Mikel Sanchez

あなたの質問では、moment('03:55jojojo', 'HH:mm',true).isValid();がtrueを返すと書きます。これは間違っています。もう一度jsfiddleを確認してください。

http://momentjs.com/docs/ から

Momentのパーサーは非常に寛容であり、これは望ましくない動作につながる可能性があります。バージョン2.3.0以降、Momentが厳密な解析を使用するように、最後の引数にブール値を指定できます。厳密な解析では、形式と入力が正確に一致する必要があります。

moment('It is 2012-05-25', 'YYYY-MM-DD').isValid();        // true
moment('It is 2012-05-25', 'YYYY-MM-DD', true).isValid();  // false
moment('2012-05-25', 'YYYY-MM-DD', true).isValid();        // true

言語と厳格さの両方を使用できます。

moment('2012-10-14', 'YYYY-MM-DD', 'fr', true);
163
Jan Sommer