我有一根绳子:
npm install lodash hapi thinky when 我有这样的判决:
npm install ([\w\.\-]+)@?([0-9_\.\-\^]*)但是它只返回第一个应用程序名lodash。因此,我可以使用哪个regex来获得lodash, hapi, thinky, when?
发布于 2018-10-07 11:22:21
您可以使用这个regex:
npm install ((?:(?:[\w\.\-]+)@?(?:[0-9_\.\-\^]*)\s*)+)这基本上是将npm install后的整个过程捕获为第1组。然后您可以通过\s+将其拆分。
var regex = /npm install ((?:(?:[\w\.\-]+)@?(?:[0-9_\.\-\^]*)\s*)+)/g;
var match = regex.exec("npm install lodash hapi thinky when");
var group1 = match[1];
console.log(group1.split(/\s+/));
发布于 2018-10-07 11:56:42
您可以从字符串的开头匹配npm install,然后使用交替在组中捕获一个单词字符一次或多次。
^npm install|(\w+)
如果要匹配的字符不止一个单词,可以使用字符类并添加要匹配的字符,例如([\w.-]+)。
const regex = /^npm install|(\w+)/g;
const str = `npm install lodash hapi thinky when`;
let m;
let result = [];
while ((m = regex.exec(str)) !== null) {
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
if (m[1]) {
result.push(m[1]);
}
}
console.log(result);
发布于 2018-10-07 12:13:54
我不会在这里用正则表达式。您可以这样做一些简单的事情:
const input = "npm install lodash hapi thinky when";
const output = input.slice(11).trim().split(/\s+/);
console.log(output);
https://stackoverflow.com/questions/52687808
复制相似问题