ISO 形式 (ISO 8601) の文字列判定

ISO 8601 - Wikipedia

ISO 8601は日付と時刻の表記に関する国際規格。

// https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString

new Date().toISOString()
// => "2018-08-31T04:56:23.130Z"
const ISO8601_DATE_REGEX = /^\d{4}-?\d\d-?\d\d(?:T\d\d(?::?\d\d(?::?\d\d(?:\.\d+)?)?)?(?:Z|[+-]\d\d:?\d\d)?)?$/;

ISO8601_DATE_REGEX.test('20101010');
// => true
ISO8601_DATE_REGEX.test('2010-10-10');
// => true
ISO8601_DATE_REGEX.test('2010-10-10T00');
// => true
ISO8601_DATE_REGEX.test('2010-10-10T00:00');
// => true
ISO8601_DATE_REGEX.test('2010-10-10T00:00:00');
// => true
ISO8601_DATE_REGEX.test('2010-10-10T00:00:00.000');
// => true
ISO8601_DATE_REGEX.test('2010-10-10T00:00:00.000Z');
// => true
ISO8601_DATE_REGEX.test('2010-10-10T00:00:00.000+09:00');
// => true

ISO8601_DATE_REGEX.test('2010-1-10');
// => false
ISO8601_DATE_REGEX.test('2010-10-10T');
// => false
ISO8601_DATE_REGEX.test('2010-10-10T00:00:00000');
// => false