Попробуйте: вам нужно создать объект даты, а не анализировать строку.
ПРИМЕЧАНИЕ. При этом строка будет проверена в том виде, в котором вы ее разместили.
YYYY-MM-DDTHH:MN:SS.MSSZ
Не удастся выполнить действительные значения ISO8601 , например
- Дата: 2018-10-18
- Объединенные дата и время в UTC: 2018-10-18T08: 04: 30 + 00: 00 (без Z и TZ в 00:00)
- 2018-10-18T08: 04: 30Z
- 20181018T080430Z
- Неделя: 2018-W42
- Дата с номером недели: 2018-W42-4
- Дата без года: --10-18 (последний в ISO8601: 2000, используется RFC 6350 [2]) *Порядковая дата: 2018-291
function isIsoDate(str) {
if (!/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(str)) return false;
var d = new Date(str);
return d.toISOString()===str;
}
console.log(isIsoDate('2011-10-05T14:48:00.000Z'))
console.log(isIsoDate('2018-11-10T11:22:33+00:00'));