You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

18 lines
543 B

'use strict';
var semverRegex = require('semver-regex');
var arrayUniq = require('array-uniq');
module.exports = function (str, opts) {
if (typeof str !== 'string') {
throw new TypeError('Expected a string');
}
opts = opts || {};
var reLoose = new RegExp('(?:' + semverRegex().source + ')|(?:v?(?:\\d+\\.\\d+)(?:\\.\\d+)?)', 'g');
var matches = str.match(opts.loose === true ? reLoose : semverRegex()) || [];
return arrayUniq(matches.map(function (el) {
return el.trim().replace(/^v/, '').replace(/^\d+\.\d+$/, '$&.0');
}));
};