代码之家  ›  专栏  ›  技术社区  ›  Lucas Dynelight

正则表达式前面部分的负匹配

  •  0
  • Lucas Dynelight  · 技术社区  · 7 年前

    我正在尝试编写与文件名匹配的正则表达式,例如:

    image.png
    image.svg
    image.gif
    

    但是,如果扩展名前面有 .inline ,就像这样:

    image.inline.png
    image.inline.svg
    image.inline.gif
    

    我当前的正则表达式与前三个匹配,如下所示: /\.(gif|png|svg)$/ -但是,我很难把前面的 .内联 是的。

    提前谢谢你的建议。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Tim Biegeleisen    7 年前

    我也会使用否定的展望,但我会用稍微不同的措辞:

    var term = "image.inline.png";
    var re = new RegExp("^(?!.*\\.inline\\.[^.]+$).*\\.(?:gif|png|svg)$");
    if (re.test(term)) {
        console.log("Valid");
    } else {
        console.log("Invalid");
    }
        2
  •  1
  •   Adam P    7 年前

    你可以用一个否定的展望来检查 .inline 是的。行动起来 here 是的。

    ^\w+(?!\.inline)\.(gif|png|svg)$