{"_id":"named-regexp-groups","_rev":"12-f06799c809392d54aeeae7e4ecea3833","name":"named-regexp-groups","description":"Regular expressions with named capture groups and named back-references","dist-tags":{"latest":"1.0.6","next":"1.0.3-1"},"versions":{"1.0.0":{"name":"named-regexp-groups","version":"1.0.0","description":"Regular expressions with named capture groups and named back-references","main":"lib","jsnext:main":"src","keywords":["regular","expression","regex","regexp","named","capture","group","backreference"],"homepage":"https://github.com/commenthol/named-regexp-groups/","bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"scripts":{"__prepublish":"npm run clean && npm run lint && npm run build && npm test","test":"mocha","coverage":"nyc --reporter=html --reporter=text mocha","build":"babel -d lib src","lint":"eslint '**/*.js'","clean":"rimraf lib coverage"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-preset-es2015":"^6.18.0","babel-preset-stage-0":"^6.16.0","babel-preset-stage-1":"^6.16.0","babel-preset-stage-2":"^6.18.0","babel-register":"^6.18.0","core-js":"^2.4.1","mocha":"*","rimraf":"*","safe-regex":"^1.1.0"},"eslintConfig":{"extends":"standard","plugins":["standard"],"rules":{}},"babel":{"ignore":["node_modules"],"presets":["es2015","stage-0","stage-1","stage-2"]},"gitHead":"1c9b137f290bc2ca2bd3ba2a5f05917a10ef961a","_id":"named-regexp-groups@1.0.0","_shasum":"6dedde28942fd70ff2357fec99188dd4605cae67","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"shasum":"6dedde28942fd70ff2357fec99188dd4605cae67","tarball":"https://registry.npmjs.org/named-regexp-groups/-/named-regexp-groups-1.0.0.tgz","integrity":"sha512-5Exbfk+avj4s+MO4g7qCrLeggTcFKNKW3reVp1FLXHNsb/tb/woReAQTqJSKWjdw/GXZ3fMbQXivZOi+UshfiQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1pqJv6tsJsu+9Y/21PDkoD+ksLkO9STpNxb+ca4DbFQIgQz6t7ZxdmI7pzWZ5cCyuGXyIF4BKzH1ezclUp//DIiI="}]},"maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/named-regexp-groups-1.0.0.tgz_1483909791298_0.7755704023875296"},"directories":{}},"1.0.1":{"name":"named-regexp-groups","version":"1.0.1","description":"Regular expressions with named capture groups and named back-references","main":"lib","jsnext:main":"src","keywords":["regular","expression","regex","regexp","named","capture","group","backreference"],"homepage":"https://github.com/commenthol/named-regexp-groups/","bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"scripts":{"__prepublish":"npm run clean && npm run lint && npm run build && npm test","test":"mocha","coverage":"nyc --reporter=html --reporter=text mocha","build":"babel -d lib src","lint":"eslint '**/*.js'","clean":"rimraf lib coverage"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-preset-es2015":"^6.18.0","babel-preset-stage-0":"^6.16.0","babel-preset-stage-1":"^6.16.0","babel-preset-stage-2":"^6.18.0","babel-register":"^6.18.0","core-js":"^2.4.1","mocha":"*","rimraf":"*","safe-regex":"^1.1.0"},"eslintConfig":{"extends":"standard","plugins":["standard"],"rules":{}},"babel":{"ignore":["node_modules"],"presets":["es2015","stage-0","stage-1","stage-2"]},"gitHead":"34a0118df2cd47196b319aeccdfd5b49b4779b93","_id":"named-regexp-groups@1.0.1","_shasum":"818f15db32b6f1742f206235224fdb8803e14ca1","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"shasum":"818f15db32b6f1742f206235224fdb8803e14ca1","tarball":"https://registry.npmjs.org/named-regexp-groups/-/named-regexp-groups-1.0.1.tgz","integrity":"sha512-nZt3yo9Nh7JGwk5or26BLKhv8yu9cjUQeRDrwOD9BVTA6Rb44W+dPn8wPPuxA9JBkOCRX+69ZzEVEsSQ4qeRLA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDC2dzyMt1pWfiKmlL7fLaQo7TFmHkxj7axlmw16QemcAiEA3786D0uI/9TX295im8HjU/oNbzYNz5gkxNk7F9zIz8M="}]},"maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/named-regexp-groups-1.0.1.tgz_1484392567231_0.5620281132869422"},"directories":{}},"1.0.2":{"name":"named-regexp-groups","version":"1.0.2","description":"Regular expressions with named capture groups and named back-references","main":"lib","jsnext:main":"src","keywords":["regular","expression","regex","regexp","named","capture","group","backreference"],"homepage":"https://github.com/commenthol/named-regexp-groups/","bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"scripts":{"__prepublish":"npm run clean && npm run lint && npm run build && npm test","test":"mocha","coverage":"nyc --reporter=html --reporter=text mocha","build":"babel -d lib src","lint":"eslint '**/*.js'","clean":"rimraf lib coverage"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-preset-es2015":"^6.18.0","babel-preset-stage-0":"^6.16.0","babel-preset-stage-1":"^6.16.0","babel-preset-stage-2":"^6.18.0","babel-register":"^6.18.0","core-js":"^2.4.1","mocha":"*","rimraf":"*","safe-regex":"^1.1.0"},"eslintConfig":{"extends":"standard","plugins":["standard"],"rules":{}},"babel":{"ignore":["node_modules"],"presets":["es2015","stage-0","stage-1","stage-2"]},"gitHead":"35734d055eec41c6d77fef64e62137c2c19d5f58","_id":"named-regexp-groups@1.0.2","_shasum":"788232a90f0e9b973b79be2242496b1b383b067f","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"shasum":"788232a90f0e9b973b79be2242496b1b383b067f","tarball":"https://registry.npmjs.org/named-regexp-groups/-/named-regexp-groups-1.0.2.tgz","integrity":"sha512-KcvvKvjX4/tHiYZNdu8TR0unxAGxEIxC9IWfAIiX+NJPjhjBbWwNeR+1Efut6pium6q9P/GqatZ8t10ofMbfeQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHkKHpgCuNqJPiVqu75R147gRC5P2OoJTxqiudyb1pZmAiEAsl4KZtxOzX/nUXj+IZ0EebzN60IzPRWla3TZetq9jOY="}]},"maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/named-regexp-groups-1.0.2.tgz_1484397861049_0.046497128903865814"},"directories":{}},"1.0.3-0":{"name":"named-regexp-groups","version":"1.0.3-0","description":"Regular expressions with named capture groups and named back-references","keywords":["backreference","capture","expression","group","named","regex","regexp","regular"],"homepage":"https://github.com/commenthol/named-regexp-groups/","bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"main":"dist/index.js","module":"dist/index.es.js","repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"scripts":{"all":"npm run clean && npm run lint && npm run build && npm test","build":"rollup -c rollup.conf.js","clean":"rimraf dist coverage .nyc_output","clean:all":"rimraf node_modules && npm run clean","coverage":"nyc -r text -r html npm test","lint":"eslint '**/*.js'","prepublishOnly":"npm run all","test":"mocha"},"babel":{"env":{"development":{"presets":["env","stage-2"]},"es5":{"presets":[["env",{"modules":false}],"stage-2"]}},"ignore":["./node_modules","./lib","./dist/index.js"]},"eslintConfig":{"extends":"standard","plugins":["standard"],"rules":{"spaced-comment":0}},"dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-2":"^6.24.1","babel-register":"^6.26.0","core-js":"^2.5.5","eslint":"^4.19.1","eslint-config-standard":"^11.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-node":"^6.0.1","eslint-plugin-promise":"^3.7.0","eslint-plugin-standard":"^3.0.1","mocha":"^5.1.1","nyc":"^11.7.1","rimraf":"^2.6.2","rollup":"^0.58.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-uglify":"^3.0.0","safe-regex":"^1.1.0"},"maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"readme":"# named-regexp-groups\n\n> Regular expressions with named capture groups and named back-references\n\n[![NPM version](https://badge.fury.io/js/named-regexp-groups.svg)](https://www.npmjs.com/package/named-regexp-groups)\n[![Build Status](https://secure.travis-ci.org/commenthol/named-regexp-groups.svg?branch=master)](https://travis-ci.org/commenthol/named-regexp-groups)\n\nCreate a named capture group with `(?<name>.*)` or `(:<name>.*)` when using\na RegExp. The methods of RegExp are supported excluding compile and toString.\nUse named back-references using `(?&name)` to include already defined named pattern.\n\n* [Installation](#installation)\n* [Usage](#usage)\n  * [exec](#exec)\n  * [test](#test)\n  * [String.replace](#string-replace)\n  * [String.match](#string-match)\n  * [String.split](#string-split)\n* [ES7](#es7)\n* [License](#license)\n\n## Installation\n\n    npm install --save named-regexp-groups\n\n## Usage\n\n```js\nimport NamedRegExp from 'named-regexp-groups'\n//or\nconst NamedRegExp = require('named-regexp-groups')\n\n// as string\nvar r = new NamedRegExp('(?<foo>foo)(?<bar>)(-)(?:wat)(?<na>(?:na)+)(?&na)')\n// or as regex\nvar r = new NamedRegExp(/(:<foo>foo)(:<bar>)(-)(?:wat)(:<na>(?:na)+)(:&na)/)\n\nr.source\n// => r.source === '(foo)([^]+)(-)(?:wat)((?:na)+)((?:na)+)'\n```\n\nFor nodejs < v5.0 `core-js` polyfills are required.\nUse `npm i -S core-js` in your project and add:\n\n```js\n// for node < v0.11\nrequire('core-js/es6/object')\n// for node < v5.0\nrequire('core-js/es6/string')\nrequire('core-js/es6/symbol')\n```\n\n### exec\n\n```js\nvar r = new NamedRegExp('(?<foo>foo)(?<bar>bar)(-)(?:wat)(?<na>(?:na)+)(?&na)')\nr.exec('nanafoobar-watnana')\n// => [ 'foobar-watnana', 'foo', 'bar', '-', 'na', 'na',\n//  index: 4,\n//  input: 'nanafoobar-watnana',\n//  groups: { foo: 'foo', bar: 'bar', '0': '-', na: 'na', '1': 'na' } ]\n```\n\n### test\n\n```js\nr = new NamedRegExp('(?<foo>foo)(bar)(?:waah)')\nr.source\n// => '(foo)(bar)(?:waah)'\nr.test('nanafoobarwaah')\n// => true\n```\n\n### String.replace\n\nIf using a string as replacement use `$+{name}` to define the placeholder for the capture group.\nThis follows the Syntax of [PCRE Named backreferences][].\n\n```js\nvar r = new NamedRegExp(/(:<year>\\d+)-(:<month>\\d+)-(:<day>\\d+)/)\n\n// ---- using strings\n'2017-01-02'.replace(r, 'day: $+{day}, month: $+{month}, year: $+{year}')\n// => 'day: 02, month: 01, year: 2017')\n\n// ---- using function\n'2016-11-22'.replace(r, function () { // take care of NOT using an arrow function here!\n  var args = [].slice.call(arguments)\n  var g = this.groups\n  return `day: ${args[g.day]}, month: ${args[g.month]}, year: ${args[g.year]}`\n})\n// => 'day: 22, month: 11, year: 2017')\n```\n\n### String.match\n\n```js\nr = new NamedRegExp('(?<foo>foo)(bar)(?:waah)')\n'nanafoobarwaah'.match(r)\n// => [ 'foobarwaah', 'foo', 'bar',\n//      index: 4, input: 'nanafoobarwaah',\n//      groups: { '0': 'bar', foo: 'foo' } ]\n```\n\n### String.split\n\n```js\nr = new NamedRegExp('(?<foo>foo)')\n'nanafoobarwaah'.split(r)\n// => [ 'nana', 'foo', 'barwaah' ]\n```\n\n## ES7\n\nThe proposed [TC39 proposal-regexp-named-groups](https://github.com/tc39/proposal-regexp-named-groups) is finding it's way into the standard.\nChrome>=64 already supports named groups. Maybe node>=10 soon as well...\n\nPaste this into Chrome>=64\n\n```js\nr = new RegExp(/(?<foo>foo)(?<bar>bar)(-)(?:wat)(?<na>(?:na)+)/);\no = r.exec('nanafoobar-watnana')\n//> (5) [\"foobar-watnana\", \"foo\", \"bar\", \"-\", \"na\",\n//>  index: 4, input: \"nanafoobar-watnana\",\n//>  groups: {foo: \"foo\", bar: \"bar\", na: \"nana\"}]\n```\n\n## License\n\nSoftware is released under [MIT][license].\n\n[license]: ./LICENSE\n[PCRE Named backreferences]: http://perldoc.perl.org/perlretut.html#Named-backreferences\n","readmeFilename":"README.md","gitHead":"e7e567ebfb245e16fb90371f252d2b7f04c1cfe8","_id":"named-regexp-groups@1.0.3-0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"integrity":"sha512-dRjERrfrOctZbFEEtoNoDmN2Nplh3WEr/8JhTGEzNXSRZst6Rk65wQ4PlSHXgm5zk7fgq+ss40eI3ZvhVJ6Nag==","shasum":"7bfb7a3389add8e1a65e7cf6348bf7361fc1fa1b","tarball":"https://registry.npmjs.org/named-regexp-groups/-/named-regexp-groups-1.0.3-0.tgz","fileCount":9,"unpackedSize":39575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3D20CRA9TVsSAnZWagAAnnEP/0QyhzBedUzy2XrRyUDb\nf60UERxy1+9snDL6WBbcx/b5jYum2P/yOBGkVBAlBbYKdSSQd3HRBmbqwNJ0\nAKqsXhDuHj6MXywbjExeHKLZ7dG48Tdl3pjmxoCpx7fL6kaJVuGb83fzSk7M\nPFCJ2kBVwlWVaexO4QG6B2OxjSZ5Ay2O202Q2FwFG+i/zPfcNoEnTKK3dkkl\nTiNTLUoDCd23d6XI4a5iGK9q9rRK3VK72n2eEIgMw2TFcUT3zQw6BD9P8jzG\nzAZ2GlRMHfUVMG6RDXg5eGPoPrwoxjlRzj0tf3PoeNw21LGPB/8s+mmFKKRB\n6EoOp2zkhsjmx4N1Ka5DFQSg2lknSlgU3TNTAY+QXJCXmFTjc3O5NtFiKjwI\n8mu73jAkB6185YZ9fkBe8s1qlQRxk/a8FPulwDNLsRaz+MEUjo43pI+bPkGN\nMweAHz51AQmes35AOa2dJZ54R5rFn8U2U5dwMCbnKox817EqysmF42a46Xbf\nJk2T0AUZ2ZltCyc8hiVaVZMrnloLSY1/ksUlFx3VVs4GrEOr4Vb2U2DbXDEK\nfDvZd64w17DhjmE25+dqcQdMDyLKGKXN2hI/WLeGKxodRWFTFw/mRnIfdNGA\n25aZfBWJMptle7CEfmNxeaDVfEtzT1DZUUG4OYE1ZM3oRMDudezmwQBegrKM\n2VQr\r\n=YeQL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCc644z4Axovc64HIklrY8HHd1kx5PUS2bLmqIIFyNOGwIhAJ7PHb85Tj2fTKyZIoTGSNTlGKNS8toEaYrUErRa8HIO"}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/named-regexp-groups_1.0.3-0_1524383156009_0.6202076818840618"},"_hasShrinkwrap":false},"1.0.3-1":{"name":"named-regexp-groups","version":"1.0.3-1","description":"Regular expressions with named capture groups and named back-references","keywords":["backreference","capture","expression","group","named","regex","regexp","regular"],"homepage":"https://github.com/commenthol/named-regexp-groups/","bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"main":"dist/index.js","module":"dist/index.es.js","repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"scripts":{"all":"npm run clean && npm run lint && npm run build && npm test","build":"rollup -c rollup.conf.js","clean":"rimraf dist coverage .nyc_output","clean:all":"rimraf node_modules && npm run clean","coverage":"nyc -r text -r html npm test","lint":"eslint '**/*.js'","prepublishOnly":"npm run all","test":"mocha"},"dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-2":"^6.24.1","babel-register":"^6.26.0","core-js":"^2.5.5","eslint":"^4.19.1","eslint-config-standard":"^11.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-node":"^6.0.1","eslint-plugin-promise":"^3.7.0","eslint-plugin-standard":"^3.0.1","mocha":"^5.1.1","nyc":"^11.7.1","rimraf":"^2.6.2","rollup":"^0.58.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-uglify":"^3.0.0","safe-regex":"^1.1.0"},"maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"readme":"# named-regexp-groups\n\n> Regular expressions with named capture groups and named back-references\n\n[![NPM version](https://badge.fury.io/js/named-regexp-groups.svg)](https://www.npmjs.com/package/named-regexp-groups)\n[![Build Status](https://secure.travis-ci.org/commenthol/named-regexp-groups.svg?branch=master)](https://travis-ci.org/commenthol/named-regexp-groups)\n\nCreate a named capture group with `(?<name>.*)` or `(:<name>.*)` when using\na RegExp. The methods of RegExp are supported excluding compile and toString.\nUse named back-references using `(?&name)` to include already defined named pattern.\n\n* [Installation](#installation)\n* [Usage](#usage)\n  * [exec](#exec)\n  * [test](#test)\n  * [String.replace](#stringreplace)\n  * [String.match](#stringmatch)\n  * [String.split](#stringsplit)\n* [ES7](#es7)\n* [License](#license)\n\n## Installation\n\n    npm install --save named-regexp-groups\n\n## Usage\n\n```js\nimport NamedRegExp from 'named-regexp-groups'\n//or\nconst NamedRegExp = require('named-regexp-groups')\n\n// as string\nvar r = new NamedRegExp('(?<foo>foo)(?<bar>)(-)(?:wat)(?<na>(?:na)+)(?&na)')\n// or as regex\nvar r = new NamedRegExp(/(:<foo>foo)(:<bar>)(-)(?:wat)(:<na>(?:na)+)(:&na)/)\n\nr.source\n// => r.source === '(foo)([^]+)(-)(?:wat)((?:na)+)((?:na)+)'\n```\n\nFor nodejs < v5.0 `core-js` polyfills are required.\nUse `npm i -S core-js` in your project and add:\n\n```js\n// for node < v0.11\nrequire('core-js/es6/object')\n// for node < v5.0\nrequire('core-js/es6/string')\nrequire('core-js/es6/symbol')\n```\n\n### exec\n\n```js\nvar r = new NamedRegExp('(?<foo>foo)(?<bar>bar)(-)(?:wat)(?<na>(?:na)+)(?&na)')\nr.exec('nanafoobar-watnana')\n// => [ 'foobar-watnana', 'foo', 'bar', '-', 'na', 'na',\n//  index: 4,\n//  input: 'nanafoobar-watnana',\n//  groups: { foo: 'foo', bar: 'bar', '0': '-', na: 'na', '1': 'na' } ]\n```\n\n### test\n\n```js\nr = new NamedRegExp('(?<foo>foo)(bar)(?:waah)')\nr.source\n// => '(foo)(bar)(?:waah)'\nr.test('nanafoobarwaah')\n// => true\n```\n\n### String.replace\n\nIf using a string as replacement use `$+{name}` to define the placeholder for the capture group.\nThis follows the Syntax of [PCRE Named backreferences][].\n\n```js\nvar r = new NamedRegExp(/(:<year>\\d+)-(:<month>\\d+)-(:<day>\\d+)/)\n\n// ---- using strings\n'2017-01-02'.replace(r, 'day: $+{day}, month: $+{month}, year: $+{year}')\n// => 'day: 02, month: 01, year: 2017')\n\n// ---- using function\n'2016-11-22'.replace(r, function () { // take care of NOT using an arrow function here!\n  var args = [].slice.call(arguments)\n  var g = this.groups\n  return `day: ${args[g.day]}, month: ${args[g.month]}, year: ${args[g.year]}`\n})\n// => 'day: 22, month: 11, year: 2017')\n```\n\n### String.match\n\n```js\nr = new NamedRegExp('(?<foo>foo)(bar)(?:waah)')\n'nanafoobarwaah'.match(r)\n// => [ 'foobarwaah', 'foo', 'bar',\n//      index: 4, input: 'nanafoobarwaah',\n//      groups: { '0': 'bar', foo: 'foo' } ]\n```\n\n### String.split\n\n```js\nr = new NamedRegExp('(?<foo>foo)')\n'nanafoobarwaah'.split(r)\n// => [ 'nana', 'foo', 'barwaah' ]\n```\n\n## ES7\n\nThe proposed [TC39 proposal-regexp-named-groups](https://github.com/tc39/proposal-regexp-named-groups) is finding it's way into the standard.\nChrome>=64 already supports named groups. Maybe node>=10 soon as well...\n\nPaste this into Chrome>=64\n\n```js\nr = new RegExp(/(?<foo>foo)(?<bar>bar)(-)(?:wat)(?<na>(?:na)+)/);\no = r.exec('nanafoobar-watnana')\n//> (5) [\"foobar-watnana\", \"foo\", \"bar\", \"-\", \"na\",\n//>  index: 4, input: \"nanafoobar-watnana\",\n//>  groups: {foo: \"foo\", bar: \"bar\", na: \"nana\"}]\n```\n\n## License\n\nSoftware is released under [MIT][license].\n\n[license]: ./LICENSE\n[PCRE Named backreferences]: http://perldoc.perl.org/perlretut.html#Named-backreferences\n","readmeFilename":"README.md","gitHead":"9477beb70b863af814d0e2a4d13b682927bb8999","_id":"named-regexp-groups@1.0.3-1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"integrity":"sha512-1ex8Pn0bi3+ruyV+FD/86XQ/QB/xAbUT25MvLutVAr5ydVQ6Pf4cAZQlVMXR2DYw5WhA25fH8Wr5YoDwPIC8rQ==","shasum":"44225cc09f2b63f331a642389e562dd8ecc99a87","tarball":"https://registry.npmjs.org/named-regexp-groups/-/named-regexp-groups-1.0.3-1.tgz","fileCount":9,"unpackedSize":39032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3i/uCRA9TVsSAnZWagAAvsAP/2ZDnK/qbQbDFEpXyoHU\nqY37WbTtKG9C3KdoVWRLojsPk749H2j3Il49ihsu8kFnoJeYAVvGTcOsVfkw\n2oigu0uJZD464Ep1oOz4r9cXL/3pW1fTnjM9yK5JPsbI4O3vw18ltAn4Ctb4\n52Wv4psfc/QQluIZtmZeyDn2FVTA7mmilnKb0h6OaHLxzUAmX5FOibQB7CBF\nRrBJIE8P6PH+3oR9FT4KqxdJ+GfI+g04yvMWfEysySnnKjwPo7t+/pLoZw7D\nfIEBTuBPwMxO4SxYtFsszi1i4ZFm13iV8x2JnPpdo7MLWvTwHp3dN92A79Vv\nfrOxuYQCGAR9Ci7y24z1HwoEbEk7vbo6ChfeMjTbxdkGC8nke83j6Tpo3NPT\npBL+GZuMEVX8NTZPMXvXYprObX2JGs294CNI2DoVdam5Ji16UV5NIJJj0bSS\nEB55gdybs4C0BYBLC3/HuqbPi3G6htubV+pNrhQL7dX1PFbiVP1EFjqyrQ5a\nBCXLT4OpepDv1DGusRf1tDhms6HPt0AUV1gbEVE28NNVCee5JQHy76uR3dsK\nV/S+o9U83xff+AR6svTtFRUhhZ/1OVJCy8nC5dObgQhXz/ElpNV3KkblMji+\nNLY9bRXWAkXKTYoouBdlZ3lvQ6tU15hZqAE6RGGOBLeAl9VdLpartT/ih3OF\nBIPm\r\n=m6VQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNqRIlawpF6TG3yxSnI0eOpb8HtvHlf7BPKyTrvxY4LwIhALHAfulj+ESyvFvs4+A7mokpVfo5b/PLIKq1jXfrExbl"}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/named-regexp-groups_1.0.3-1_1524510701086_0.19832711513321377"},"_hasShrinkwrap":false},"1.0.3":{"name":"named-regexp-groups","version":"1.0.3","description":"Regular expressions with named capture groups and named back-references","keywords":["backreference","capture","expression","group","named","regex","regexp","regular"],"homepage":"https://github.com/commenthol/named-regexp-groups/","bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"main":"dist/index.js","module":"dist/index.es.js","repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"scripts":{"all":"npm run clean && npm run lint && npm run build && npm test","build":"rollup -c rollup.conf.js","clean":"rimraf dist coverage .nyc_output","clean:all":"npm run clean && rimraf node_modules","coverage":"nyc -r text -r html npm test","lint":"eslint '**/*.js'","prepublishOnly":"npm run all","test":"mocha"},"dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-2":"^6.24.1","babel-register":"^6.26.0","core-js":"^2.5.5","eslint":"^4.19.1","eslint-config-standard":"^11.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-node":"^6.0.1","eslint-plugin-promise":"^3.7.0","eslint-plugin-standard":"^3.0.1","mocha":"^5.1.1","nyc":"^11.7.1","rimraf":"^2.6.2","rollup":"^0.58.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-uglify":"^3.0.0","safe-regex":"^1.1.0"},"maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"gitHead":"2197285d104204a4cddc9b121757e046bcc7566b","_id":"named-regexp-groups@1.0.3","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"integrity":"sha512-sm+xkoA+d/lS4I7VMvM0f2fAmkrBEE2Ql1db0Q1iCdu3QINv4APM9o6Zo9XfD9aezH1vUQevCPypn+Aq+gTdtQ==","shasum":"06cf506b840535868a87606f5ece47dd2e4f6a9a","tarball":"https://registry.npmjs.org/named-regexp-groups/-/named-regexp-groups-1.0.3.tgz","fileCount":9,"unpackedSize":39030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa31iACRA9TVsSAnZWagAAt0AP/ApA4ly0noQjlb7DyuLB\naGMaBg83GiXCtTgdtDj1WGWERVrNys7pUP0mMyIjGrH8gDobVzkicUdejvUt\nRSIi4G4D/Uu+p7H73cwaFti21jR7Z7xVk/Q1Wa7/B4K8UVzGnFgFMXOAWyfI\nffs5C7oySfwzXO4dyjYbUrq+b0UgtUW7ApEuPj5bA/9AK2slQJerIQVILNeG\nzABJW+bTyKMVv48UgUWyKHDlYw7dHWz8ZahbLbXcKYpjQAKB+gpmHoz5p0xc\nJ6q/nlW23v1R2sRlc0QUjU1T9K1BQZqLLFjXjTPbSer4keWejPAJZGcLcNmi\nmjtAiRnbfKMRVNshjyVaETjptZij/Zepj4ueEhXO6jWNWNVFy8OToG2HGmAx\n14gcs1CpxX+kCFnvycMG7sV/v6bfAIN5J8Pww6H6x1UiGf6PwT+pZaISKXuV\nbb0pTF1kBbHsC+vdteIyF2de8LzTp0KCXJm1OHbZA+UQwwvVUp7MtMbkkteh\n21TWGoU2z2/XWLkD/95VCAlkY/BMwrVtbyZY8/aCjCuwQsFbHd3S2x6M+ruH\nqub6HckCI/ZVrLYP+GSKPxZVrN/CJWZ995cYphjG+ZO7DRFw/4dfvEqsmjtw\nKh6Ig6nuXSyFozZCIX7+lsTXAizTUjJ5mYY9UWThULsUzZyrzK1S3i7/iUcD\nJOqA\r\n=sUnX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+TFr12A8B7vkC6p60u9howwTUIEm5V/Xgp5h2edesHgIgECx9dTrN4oGfmh+8zU2bbQpflIqkgi5HnoRW44Shlj0="}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/named-regexp-groups_1.0.3_1524586623425_0.5719047593853375"},"_hasShrinkwrap":false},"1.0.4":{"name":"named-regexp-groups","version":"1.0.4","description":"Regular expressions with named capture groups and named back-references","keywords":["backreference","capture","expression","group","named","regex","regexp","regular"],"homepage":"https://github.com/commenthol/named-regexp-groups/","bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"main":"dist/index.js","module":"dist/index.es.js","scripts":{"all":"npm run clean && npm run lint && npm run build && npm test","build":"rollup -c rollup.conf.js","clean":"rimraf dist coverage .nyc_output","clean:all":"npm run clean && rimraf node_modules","coverage":"nyc -r text -r html npm test","lint":"eslint '**/*.js'","prepublishOnly":"npm run all","test":"mocha"},"dependencies":{},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/preset-env":"^7.6.3","@babel/register":"^7.6.2","core-js":"^3.3.4","eslint":"^6.5.1","eslint-config-standard":"^14.1.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^10.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","mocha":"^6.2.2","nyc":"^14.1.1","rimraf":"^3.0.0","rollup":"^1.25.2","rollup-plugin-babel":"^4.3.3","rollup-plugin-uglify-es":"^0.0.1","safe-regex":"^2.1.1"},"engines":{"node":">=6.0"},"maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"gitHead":"18c80b227c671e71cd5cbe92fd939f387195dd68","_id":"named-regexp-groups@1.0.4","_nodeVersion":"13.0.1","_npmVersion":"6.12.0","dist":{"integrity":"sha512-SUK805mYTErPssXePXARshhlHqelQaesXMTsBgwth9HfFNfxRaUr7ry46mA8gNyLoVFgbVk9XOsJFy1cT39m8Q==","shasum":"3ae4d85113faf0d0bcaea35df7b93c6f63792c7c","tarball":"https://registry.npmjs.org/named-regexp-groups/-/named-regexp-groups-1.0.4.tgz","fileCount":9,"unpackedSize":39397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsyqLCRA9TVsSAnZWagAAB5YP/j8WSIvTzzrv9Mmgk7qt\nx0/J30W6bvJjmF7dJPDEJzEcp6nbknnRGr1xe4Ct3CNvM1qh2QUnJ7xp0wId\nCFwV5aQYfkZSwTGECGn2jsRw5vP7qPrdxXONuIDJHSyZt4eSc8Z22DhBinfe\nt4kSGfmENs7Z8DYchDiVE/I9upPF/87T5BNAhWJ9XXxfVfzvawJtNZcZNRPJ\nfHPsa0Y3P03zaowC4WCdYQbI/LytUh4pDUbXfRj24taPQVq5yaYs63mA72rT\nfVNHTFFflAhkmWakrbX3uh0SWCtUlf3x9rc11rWqAHlDccMzrT/edjuChE0F\nSZHslGx6WFT3OLISplhf7SDgeYXilbJw4iz0TojQjyfp0IexVbQU9z+67kIp\nYsGrS10+6pGOiVvRvpLOh6UEdEwtUWti4kMFrgeddjj2rbc1Id+o+upw1sCQ\nF0zAkApV2Iwg2DXJnss0kjalrgzGFBkEe5CmAZWtV/86rTU15dY6jV20FUDK\nvk7MiYekUDp7sxcAEHo157R+tWA1e97SxR0P9DaaBxSa/rggFuwDLzB859IA\nyJOcP89GF5PfkMC0MSPy0cJ+CVMk/nzDfZ6PpHguzWaYtHJTUGDMQyrnXpZO\nrdud4S80uThjdKhlnGZ4dH4IvRivVULCoAqyODXY43N28C3HJs5QdSgdgsPS\nt/u7\r\n=xwZU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUE/vtWZAuFzq72izLL3/582tCcfTnr1qlQuMUukTigAIgVUTLLpsZuiJ5fwzOEWS9mOpLwFo4TUFC6GCrUNGtPqw="}]},"_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/named-regexp-groups_1.0.4_1572022922986_0.9452927906588717"},"_hasShrinkwrap":false},"1.0.5":{"name":"named-regexp-groups","version":"1.0.5","description":"Regular expressions with named capture groups and named back-references","keywords":["backreference","capture","expression","group","named","regex","regexp","regular"],"homepage":"https://github.com/commenthol/named-regexp-groups/","bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"main":"dist/index.js","module":"dist/index.es.js","scripts":{"all":"npm run clean && npm run lint && npm run build && npm test","build":"rollup -c rollup.conf.js","clean":"rimraf dist coverage .nyc_output","clean:all":"npm run clean && rimraf node_modules","coverage":"nyc -r text -r html npm test","lint":"eslint '**/*.js'","prepublishOnly":"npm run all","test":"mocha"},"dependencies":{},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/preset-env":"^7.6.3","@babel/register":"^7.6.2","core-js":"^3.3.4","eslint":"^6.6.0","eslint-config-standard":"^14.1.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^10.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","mocha":"^6.2.2","nyc":"^14.1.1","rimraf":"^3.0.0","rollup":"^1.25.2","rollup-plugin-babel":"^4.3.3","rollup-plugin-terser":"5.1.2","safe-regex":"^2.1.1"},"engines":{"node":">=6.0"},"maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"gitHead":"ca328f91c82431cd4ce7dcdfafa7ed1d628709ed","_id":"named-regexp-groups@1.0.5","_nodeVersion":"13.0.1","_npmVersion":"6.12.0","dist":{"integrity":"sha512-oK8TaLTXw4dIUOvbxGAO+OZf8b+69DZgcZMbbfTX6GCzjm4vcc+8VrdZoHpttdJTVeuCV3aQVjKfv7k8Q5SLSg==","shasum":"14d1e45c2dfa6e0d7359265509f8305a5e02a1ba","tarball":"https://registry.npmjs.org/named-regexp-groups/-/named-regexp-groups-1.0.5.tgz","fileCount":9,"unpackedSize":39177,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJds9cUCRA9TVsSAnZWagAARNQP/ArXDK4JphAjvA+zF2ca\nmJZLstdkjZu1Vm2PLMwl8T0b3b49S6ZxgIrxlnlse4q7JDDbkuCvxTDN2Hsr\nUVv4lPvAkHyQ9mbJtHx4GNViVlXoXg3pgWYaoX8nUqZslw0tWdKeP+mypPW3\nnsHcII6TFBPUQiIaHlYOh9vq/zLw/2hGpFPPulT/G/4VFPwlOXlAEYpjpnDw\nvAQcNgCiNhK3uMTQWTjrtbK1YWb5ryJ3eyW0H6uIgvWptMNDpGqItnP1gkLf\n1qMbu3/pguF6rQoe72NKBvSwmqUltzRtFdD9pY/xB5GbcDq2wB0ysiicGsl2\nw6cLbg0pxrxCBPyAebj8MhO2yZArqJgB7S//ykwo7rmMR7Zf9sxu9rB0fioG\nZa2pB3vbW45HMAGSFn+hQGtRMM4iyRQjVX/OfhCqfNhGERVkhkcVm5EFrfkx\nBc3TZzC9X3ICzU3yB6vq3vmpUjo7lAbUt/9b7Q2OmDMPkEer/9OTXI+179MZ\ngkl9t0Cd8lQouj/wdTrazpTlwkAnv3Z/ifBhWzYMK6L4QGxv0LNbxrDNDcHq\nE5TGsk/lNNXqA6dUwiOPxc34wWwY+IkKTGpxXfXoGqYkVTU63bn1NPFjZ9vA\n+0Tdd5VveX370uqdxykUHt8TLQaCk4FI3HZM2juKjDkUv9kmmCbKTSglhL3f\nnIDV\r\n=WvmL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+TkvZKNANFDdO6t7euJoFT8ZruCsRTKhHp+A86ZjldwIgO1AwWDH5iXn3tQc+fWnCOSz4VAG5IstyWZS8IMPU+f4="}]},"_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/named-regexp-groups_1.0.5_1572067092527_0.9665346113521132"},"_hasShrinkwrap":false},"1.0.6":{"name":"named-regexp-groups","version":"1.0.6","description":"Regular expressions with named capture groups and named back-references","keywords":["backreference","capture","expression","group","named","regex","regexp","regular"],"homepage":"https://github.com/commenthol/named-regexp-groups/","bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"main":"dist/index.js","module":"dist/index.es.js","scripts":{"ci":"npm run clean && npm run lint && npm run build && npm test","build":"rollup -c rollup.conf.js","clean":"rimraf dist coverage .nyc_output","clean:all":"npm run clean && rimraf node_modules","coverage":"c8 -r lcov -r text -r html npm test","lint":"eslint --ext js .","prepublishOnly":"npm run all","test":"mocha"},"devDependencies":{"@babel/cli":"^7.17.6","@babel/core":"^7.17.5","@babel/preset-env":"^7.16.11","@babel/register":"^7.17.0","core-js":"^3.21.1","eslint":"^7.32.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.25.4","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1","eslint-plugin-standard":"^4.1.0","mocha":"^9.2.1","c8":"^7.11.0","rimraf":"^3.0.2","rollup":"^2.68.0","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"7.0.2","safe-regex":"^2.1.1"},"engines":{"node":">=6.0"},"maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"gitHead":"39ca5fe42b8598c3416418191f2ea2bf0825359e","_id":"named-regexp-groups@1.0.6","_nodeVersion":"17.6.0","_npmVersion":"8.5.1","dist":{"integrity":"sha512-A11oFLKUmP2jjJB13bWGjv5F7KxitIOzRF0tKjKz56lXfOe8B4SO1SgSFbn0G4inwbeExd5dOQntSC+G3Pn0MQ==","shasum":"23826f4b3cca43e334d199055fe9b24375caf9be","tarball":"https://registry.npmjs.org/named-regexp-groups/-/named-regexp-groups-1.0.6.tgz","fileCount":9,"unpackedSize":39452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiGT3zACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrH6Q/+KYaD0YioNVJGQWrVqB53H9Pngu2kzNg4F8wnUQ9pk0+cdqN/\r\nKzQGTx3qCv2rXYAHGoL2U/xip1+8FSGGJr1GGsBJ5nrNMkh7XwdIx/9BgYdj\r\nmJn1qsvTL0iDoksgtv16AsqAMnzyWsl/0NUGelFSjBPJLCCtw3SFwBSuB36L\r\nJb7wX+pPSl2iPHiQa3NLrdWlUIskO3cZCKmT9c+fyRJOuK75s90qFJ2crafu\r\nnAwEW5eL+993e9Q9h8hHQVUWGaQgPePxBsO0gwxhHT0354AciWp3eWclOhJo\r\nyjAtSmu0y87ZMQjeA9EtggSyAEvVTYcfen6bhZyj+Wl/23SNn176cMr8iJkN\r\n4+OCGSHMjHi2FhJlJo3EeaUWY52dFSXaO8qBhGHnyQPfRSrGShtvzQRoCp8n\r\nZJeFk1Rhe6fzPkbWjbms1lrJ/bXCLIOQBZsa1zGSrKRVvz+5nPB50T3bHA1Q\r\nU73+JcHgOyfVQ8huja/lS+P3EJ2nbXDTKEYTfWgsU1i3Hq+cSN0J70u1dNBh\r\nqH5vHQyfl6h1hFer+bqRjcUBILxxgZs5qBr3cH/YWBqWzRGZtBrfY5ncG+VL\r\nsF6i0bCfQZswjNrM2zHmXWel2FYrAlH5rBUBnKkIJevYP6t/TrIOKwnqRr7N\r\nuFn36LGxQDBVLHb9Kz4RAvSgmDs0V2e9I54=\r\n=fhC+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQQC+ay5ngMle9LOfISb4TPmep6Wzr6OQmZCJjZwtINgIhAJEtsigWFqL/I4af9LcHh7cplPxebuT7Nx2IAnRyQd5T"}]},"_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/named-regexp-groups_1.0.6_1645821427657_0.43611179296682834"},"_hasShrinkwrap":false}},"readme":"# named-regexp-groups\n\n> Regular expressions with named capture groups and named back-references\n\n[![NPM version](https://badge.fury.io/js/named-regexp-groups.svg)](https://www.npmjs.com/package/named-regexp-groups)\n[![Build Status](https://github.com/commenthol/named-regexp-groups/workflows/CI/badge.svg?branch=master&event=push)](https://github.com/commenthol/named-regexp-groups/actions/workflows/ci.yml?query=branch%3Amaster)\n\nCreate a named capture group with `(?<name>.*)` or `(:<name>.*)` when using\na RegExp. The methods of RegExp are supported excluding compile and toString.\nUse named back-references using `(?&name)` to include already defined named pattern.\n\n* [Installation](#installation)\n* [Usage](#usage)\n  * [exec](#exec)\n  * [test](#test)\n  * [String.replace](#stringreplace)\n  * [String.match](#stringmatch)\n  * [String.split](#stringsplit)\n* [ES7](#es7)\n* [License](#license)\n\n## Installation\n\n    npm install --save named-regexp-groups\n\n## Usage\n\n```js\nimport NamedRegExp from 'named-regexp-groups'\n//or\nconst NamedRegExp = require('named-regexp-groups')\n\n// as string\nvar r = new NamedRegExp('(?<foo>foo)(?<bar>)(-)(?:wat)(?<na>(?:na)+)(?&na)')\n// or as regex\nvar r = new NamedRegExp(/(:<foo>foo)(:<bar>)(-)(?:wat)(:<na>(?:na)+)(:&na)/)\n\nr.source\n// => r.source === '(foo)([^]+)(-)(?:wat)((?:na)+)((?:na)+)'\n```\n\nFor nodejs < v5.0 `core-js` polyfills are required.\nUse `npm i -S core-js` in your project and add:\n\n```js\n// for node < v0.11\nrequire('core-js/es6/object')\n// for node < v5.0\nrequire('core-js/es6/string')\nrequire('core-js/es6/symbol')\n```\n\n### exec\n\n```js\nvar r = new NamedRegExp('(?<foo>foo)(?<bar>bar)(-)(?:wat)(?<na>(?:na)+)(?&na)')\nr.exec('nanafoobar-watnana')\n// => [ 'foobar-watnana', 'foo', 'bar', '-', 'na', 'na',\n//  index: 4,\n//  input: 'nanafoobar-watnana',\n//  groups: { foo: 'foo', bar: 'bar', '0': '-', na: 'na', '1': 'na' } ]\n```\n\n### test\n\n```js\nr = new NamedRegExp('(?<foo>foo)(bar)(?:waah)')\nr.source\n// => '(foo)(bar)(?:waah)'\nr.test('nanafoobarwaah')\n// => true\n```\n\n### String.replace\n\nIf using a string as replacement use `$+{name}` to define the placeholder for the capture group.\nThis follows the Syntax of [PCRE Named backreferences][].\n\n```js\nvar r = new NamedRegExp(/(:<year>\\d+)-(:<month>\\d+)-(:<day>\\d+)/)\n\n// ---- using strings\n'2017-01-02'.replace(r, 'day: $+{day}, month: $+{month}, year: $+{year}')\n// => 'day: 02, month: 01, year: 2017')\n\n// ---- using function\n'2016-11-22'.replace(r, function () { // take care of NOT using an arrow function here!\n  var args = [].slice.call(arguments)\n  var g = this.groups\n  return `day: ${args[g.day]}, month: ${args[g.month]}, year: ${args[g.year]}`\n})\n// => 'day: 22, month: 11, year: 2017')\n```\n\n### String.match\n\n```js\nr = new NamedRegExp('(?<foo>foo)(bar)(?:waah)')\n'nanafoobarwaah'.match(r)\n// => [ 'foobarwaah', 'foo', 'bar',\n//      index: 4, input: 'nanafoobarwaah',\n//      groups: { '0': 'bar', foo: 'foo' } ]\n```\n\n### String.split\n\n```js\nr = new NamedRegExp('(?<foo>foo)')\n'nanafoobarwaah'.split(r)\n// => [ 'nana', 'foo', 'barwaah' ]\n```\n\n## ES7\n\nThe proposed [TC39 proposal-regexp-named-groups](https://github.com/tc39/proposal-regexp-named-groups) is finding it's way into the standard.\nChrome>=64 already supports named groups. Maybe node>=10 soon as well...\n\nPaste this into Chrome>=64\n\n```js\nr = new RegExp(/(?<foo>foo)(?<bar>bar)(-)(?:wat)(?<na>(?:na)+)/);\no = r.exec('nanafoobar-watnana')\n//> (5) [\"foobar-watnana\", \"foo\", \"bar\", \"-\", \"na\",\n//>  index: 4, input: \"nanafoobar-watnana\",\n//>  groups: {foo: \"foo\", bar: \"bar\", na: \"nana\"}]\n```\n\n## License\n\nSoftware is released under [MIT][license].\n\n[license]: ./LICENSE\n[PCRE Named backreferences]: http://perldoc.perl.org/perlretut.html#Named-backreferences\n","maintainers":[{"name":"commenthol","email":"commenthol@gmail.com"}],"time":{"modified":"2022-06-20T19:38:20.972Z","created":"2017-01-08T21:09:52.040Z","1.0.0":"2017-01-08T21:09:52.040Z","1.0.1":"2017-01-14T11:16:09.443Z","1.0.2":"2017-01-14T12:44:22.728Z","1.0.3-0":"2018-04-22T07:45:56.068Z","1.0.3-1":"2018-04-23T19:11:41.237Z","1.0.3":"2018-04-24T16:17:03.706Z","1.0.4":"2019-10-25T17:02:03.146Z","1.0.5":"2019-10-26T05:18:12.677Z","1.0.6":"2022-02-25T20:37:07.885Z"},"homepage":"https://github.com/commenthol/named-regexp-groups/","keywords":["backreference","capture","expression","group","named","regex","regexp","regular"],"repository":{"type":"git","url":"git://github.com/commenthol/named-regexp-groups.git"},"author":{"name":"commenthol","email":"commenthol@gmail.com"},"bugs":{"url":"https://github.com/commenthol/named-regexp-groups/issues"},"license":"MIT","readmeFilename":"README.md"}