正则表达式较早部分的负匹配

时间:2018-06-29 01:31:25

标签: javascript regex

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

image.png
image.svg
image.gif

但是,如果我的扩展名前面有.inline,我不希望它匹配,就像这样:

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

我当前的正则表达式与前三个匹配,就像这样:/\.(gif|png|svg)$/-但是,我很难为前面的.inline添加否定条件。

预先感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

您可以使用否定的超前查询来检查前面的.inline。在操作here中查看它。

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

答案 1 :(得分:1)

我还会使用否定的前瞻,但我的说法会略有不同:

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