Repository: moment/luxon (js)

Issue:
ISO Duration with 10 digits seconds cannot be parsed as ISO 8601
### Steps to reproduce

```js
const duration = luxon.Duration.fromISO('PT1000000000S')
console.log(duration.invalid)
```

### Current Result

```
Object {
  explanation: "the input 'PT1000000000S' can't be parsed as ISO 8601",
  reason: "unparsable",
  toMessage: function(){return this.explanation?this.reason+": "+this.explanation:this.reason}
}
```

### Expected Result

```js
null
```

### Details

`Duration.fromISO(isoDurationString)` cannot parse an ISO Duration that has seconds with 10 or more leading digits (eg. 'PT1000000000S').

Unfortunately this is the kind of format that `DateTime.fromISO(isoDateString).diffNow().negate().toISO()` produces.

See this Codepen for a minimal example:

https://codepen.io/visualjerk/pen/rNxpVBW


Pull request description:
feat: add support for large durations in seconds
Closes #731

Patch:
diff --git a/src/impl/regexParser.js b/src/impl/regexParser.js
index 1ceca9f9..62a244ef 100644
--- a/src/impl/regexParser.js
+++ b/src/impl/regexParser.js
@@ -120,7 +120,7 @@ function extractIANAZone(match, cursor) {
 
 // ISO duration parsing
 
-const isoDuration = /^-?P(?:(?:(-?\d{1,9})Y)?(?:(-?\d{1,9})M)?(?:(-?\d{1,9})W)?(?:(-?\d{1,9})D)?(?:T(?:(-?\d{1,9})H)?(?:(-?\d{1,9})M)?(?:(-?\d{1,9})(?:[.,](-?\d{1,9}))?S)?)?)$/;
+const isoDuration = /^-?P(?:(?:(-?\d{1,9})Y)?(?:(-?\d{1,9})M)?(?:(-?\d{1,9})W)?(?:(-?\d{1,9})D)?(?:T(?:(-?\d{1,9})H)?(?:(-?\d{1,9})M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,9}))?S)?)?)$/;
 
 function extractISODuration(match) {
   const [


Test patch:
diff --git a/test/duration/parse.test.js b/test/duration/parse.test.js
index b7827b4e..f8ec42db 100644
--- a/test/duration/parse.test.js
+++ b/test/duration/parse.test.js
@@ -17,6 +17,7 @@ test("Duration.fromISO can parse a variety of ISO formats", () => {
   check("P1YT34000S", { years: 1, seconds: 34000 });
   check("P1W1DT13H23M34S", { weeks: 1, days: 1, hours: 13, minutes: 23, seconds: 34 });
   check("P2W", { weeks: 2 });
+  check("PT10000000000000000000.999S", { seconds: 10000000000000000000, milliseconds: 999 });
 });
 
 test("Duration.fromISO can parse mixed or negative durations", () => {