const regex = /^(?<exe>npm)?\ ?(?<run>(?<=\k<exe> )run(?:-script)?)?\ ?(?<command>(?<=\k<run> )[a-z]+(?:[-|:|.|_][a-z]+)?|(?<!\k<run> )[a-z]+(?:[-][a-z]+)?)?\ ?(?<pkgdetails>[a-z0-9\>\=\:\+\#\^\.\@\/][a-z0-9\>\=\:\+\#\^\~\.\@\/\-]+)?\ ?(?<options>(?:\ [-]{1,2}[a-zA-Z]+(?:[-][a-z]+)*)*)?$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(?<exe>npm)?\\ ?(?<run>(?<=\\k<exe> )run(?:-script)?)?\\ ?(?<command>(?<=\\k<run> )[a-z]+(?:[-|:|.|_][a-z]+)?|(?<!\\k<run> )[a-z]+(?:[-][a-z]+)?)?\\ ?(?<pkgdetails>[a-z0-9\\>\\=\\:\\+\\#\\^\\.\\@\\\/][a-z0-9\\>\\=\\:\\+\\#\\^\\~\\.\\@\\\/\\-]+)?\\ ?(?<options>(?:\\ [-]{1,2}[a-zA-Z]+(?:[-][a-z]+)*)*)?$', 'gm')
const str = `npm install cordova-browser@~5.0.1 --production --save
npm install --no-package-lock
npm -v
npm version major
npm version minor
npm version patch
npm run build
npm run build:spypkg
npm run build-spypkg
npm run build.spypkg
npm run build_spypkg
npm run-script build:spypkg
npm run-script build-spypkg
npm run-script build.spypkg
npm run-script build_spypkg
i sots --D
i sots --production
i sots --production --no-save
install sots --production --no-save
npm install sots --production --no-save
npm install ./package.tgz
npm install https://github.com/indexzero/forever/tarball/v0.5.6
npm install sax
npm install sax -P
npm install sax -D
npm install sax -O
i
npm i
i sax
i sax -D
install
install sax -P
install sax -D
install sax -O
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save-exact
npm install ansi-regex --save-bundle
npm install sax@latest
npm install @myorg/mypackage@latest
npm install sax@0.1.1
npm install @myorg/privatepackage@1.5.0
npm install sax@">=0.1.0 <0.2.0"
npm install @myorg/privatepackage@">=0.1.0 <0.2.0"
npm install git+ssh://git@github.com:npm/cli.git#v1.0.27
npm install git+ssh://git@github.com:npm/cli#semver:^5.0
npm install git+https://isaacs@github.com/npm/cli.git
npm install git://github.com/npm/cli.git#v1.0.27
npm install mygithubuser/myproject
npm install github:mygithubuser/myproject
npm install gist:101a11beef
npm install bitbucket:mybitbucketuser/myproject
npm install gitlab:mygitlabuser/myproject
npm install gitlab:myusr/myproj#semver:^5.0
npm install sax@">=0.1.0 <0.2.0" bench supervisor
npm install sax --force`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions