为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式匹配 OrgMode 标签

正则表达式匹配 OrgMode 标签

弑天下 2021-06-28 09:00:09
我想用 JavaScript 编写一个正则表达式来匹配 OrgMode 格式的标签例子:示例标题 :tag1:tag2:tag3:我已经测试了以下正则表达式,但它只匹配第一个和最后一个标签 (tag1,tag3):\:\w+\:谢谢
查看完整描述

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);


查看完整回答
反对 回复 2021-07-08
?
拉风的咖菲猫

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}`);

    });

}


查看完整回答
反对 回复 2021-07-08
  • 2 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信