var re = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(\.(\d+))?((Z)|(([\+\-])(\d{2}):(\d{2})))$/;
var d = "2016-10-08T18:50:00.12345678-04:00".match(re);
d
(10) ["2016-10-08T18:50:00.12345678-04:00", "2016-10-08T18:50:00", ".12345678", "12345678", "-04:00", undefined, "-04:00", "-", "04", "00", index: 0, input: "2016-10-08T18:50:00.12345678-04:00", groups: undefined]
- 0: "2016-10-08T18:50:00.12345678-04:00"
- 1: "2016-10-08T18:50:00"
- 2: ".12345678"
- 3: "12345678"
- 4: "-04:00"
- 5: undefined
- 6: "-04:00"
- 7: "-"
- 8: "04"
- 9: "00"
- groups: undefined
- index: 0
- input: "2016-10-08T18:50:00.12345678-04:00"
- length: 10
- __proto__: Array(0)