Javascript 这个JavasScript正则表达式\(md | njk | md\.njk)$可以进一步简化吗?

Javascript 这个JavasScript正则表达式\(md | njk | md\.njk)$可以进一步简化吗?,javascript,regex,Javascript,Regex,我需要匹配这些字符串: foo.md -> capturing group should be: (.md) foo.njk -> capturing group should be: (.njk) foo.md.njk -> capturing group should be: (.md.njk) 。。。在第一个点之后捕获(编辑:但扩展名仍应为md或njk或md.njk) 这就是我所做的:\(md | njk | md\.njk)$()首先,它是有效的 我试图

我需要匹配这些字符串:

foo.md     -> capturing group should be: (.md)
foo.njk    -> capturing group should be: (.njk)
foo.md.njk -> capturing group should be: (.md.njk)
。。。在第一个点之后捕获(编辑:但扩展名仍应为md或njk或md.njk)

这就是我所做的:
\(md | njk | md\.njk)$
()首先,它是有效的

我试图简化它,所以我最后得到了另一个:
\(md |(md\)?njk)$
()它稍微好一点,但仍然重复“md”这个词


是否可以进一步简化?

如果您想捕获第一个点之后的任何内容,我认为您可以使用

/\.(.+)$/gi

编辑:正如评论中提到的分数,将
$
放在末尾不是一个坏主意

这个怎么样

/\.((md)?(\.)?(njk)?)$/

@分数仍在考虑扩展(即md | njk | md.njk)也许您想试试这个
\.\b(md)\.?(njk)$
。在这里看现场演示。请注意,这与
mdnjk
(之间没有点)。ops。。。是的,但不是,我仍然想要匹配分机。你到底想要匹配什么?其他方面,您可以放置另一组捕获以捕获最新的点。请查看我的更新问题。扩展md | md.njk | njk是强制性的。请检查@Skolak的答案,我相信这就是您需要的。如果你需要检查所有的扩展,就不能再短了对不起,我不是这么要求的。例如,foo.exe不应匹配。