// preliminary iso regex
// 0000-00-00 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000
- isoRegex = /^\s*\d{4}-\d\d-\d\d(T(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,
+ isoRegex = /^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,
isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
// iso time formats and regexes
isoTimes = [
- ['HH:mm:ss.S', /T\d\d:\d\d:\d\d\.\d{1,3}/],
- ['HH:mm:ss', /T\d\d:\d\d:\d\d/],
- ['HH:mm', /T\d\d:\d\d/],
- ['HH', /T\d\d/]
+ ['HH:mm:ss.S', /(T| )\d\d:\d\d:\d\d\.\d{1,3}/],
+ ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
+ ['HH:mm', /(T| )\d\d:\d\d/],
+ ['HH', /(T| )\d\d/]
],
// timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"]
['2011-10-08T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
['2011-10-08T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
['2011-10-08T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz]
+ ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
+ ['2011-10-08 18', '2011-10-08T18:00:00.000' + tz],
+ ['2011-10-08 18:04', '2011-10-08T18:04:00.000' + tz],
+ ['2011-10-08 18:04:20', '2011-10-08T18:04:20.000' + tz],
+ ['2011-10-08 18:04' + tz, '2011-10-08T18:04:00.000' + tz],
+ ['2011-10-08 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
+ ['2011-10-08 18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
+ ['2011-10-08 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
+ ['2011-10-08 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
+ ['2011-10-08 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
+ ['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz]
];
test.expect(formats.length);
for (var i = 0; i < formats.length; i++) {