Now, with ES2018, RegExp named capture groups are actually possible.
Here's an example already working in Chrome 64 (soon to be available also in Safari).
const isoDateExpression = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/;
let match = isoDateExpression.exec('1999-12-31');
console.log(
    match.groups.year, // 1999
    match.groups.month, // 12
    match.groups.day, // 31
)
Syntax reference:
https://github.com/tc39/proposal-regexp-named-groups
Firefox haven't decided yet, but here's an entry in Mozilla's issue tracker:
https://bugzilla.mozilla.org/show_bug.cgi?id=1362154
Edit: Named capture groups are now implemented in major browsers and available since Chrome 62 (2018), Firefox 78 (2020) and Safari 11.3 (2018).