首页 > 解决方案 > 正则表达式试图匹配没有加号

问题描述

"funny+gifs-politics+aww".match(/\+(\w+)/gis)

[+gifs, +aww]当我在寻找 时,返回数组[gifs, aww]。我把括号放在哪里似乎没有什么区别。

"funny+gifs-politics+aww".match(/(\+\w+)/gis)

结果相同。我在这里想念什么?谢谢。

标签: javascriptregex

解决方案


您可以使用该.matchAll()方法,我认为它是相当新的。

const res = "funny+gifs-politics+aww".matchAll(/\+(\w+)/gis);
const subs = [];

for (const r of res) {
  console.log(r);
  subs.push(r[1]);
}

console.log(subs);


否则,您可以.exec()在循环中使用。

const re = /\+(\w+)/gis;
const s = "funny+gifs-politics+aww";
let match = null;
const subs = [];

while((match = re.exec(s))) {
  console.log(match);
  subs.push(match[1]);
}

console.log(subs);


推荐阅读