2 回答
TA贡献1863条经验 获得超2个赞
用
/:(\w+)(?=:)/g
您需要的值在第 1 组内。请参阅在线正则表达式演示。
要点是(?=:)正向前瞻:它检查(并要求)但不消耗模式:右侧的\w+。
请参阅下面的 JS 演示:
var s = "Sample title :tag1:tag2:tag3:";
var reg = /:(\w+)(?=:)/g;
var results = [], m;
while(m = reg.exec(s)) {
results.push(m[1]);
}
console.log(results);
TA贡献1995条经验 获得超2个赞
我的猜测是,如果我们要验证,这里可能需要一个带有开始和结束锚点的表达式:
^((?=:\w+)(:\w+)+):$
const regex = /^((?=:\w+)(:\w+)+):$/gm;
const str = `:tag1:tag2:tag3:
:tag1:tag2:tag3:tag4:
:tag1:tag2:tag3:tag4:tage5:
:tag1:tag2:tag3:tag4:tage5`;
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}`);
});
}
添加回答
举报