如何用正则匹配仅含单个指定扩展名的文件名?
解决单个指定扩展名的正则匹配问题
要实现仅匹配含单个指定扩展名(js/jsx)的文件名,排除非指定扩展名、多扩展名组合的情况,你可以用这个正则:
^[^.]+\.(js|jsx)$
规则解释
^:锚定字符串起始位置[^.]+:匹配1个及以上非点号的字符,确保文件名主体部分没有其他点号\.:匹配分隔扩展名的点号(js|jsx):精准匹配指定的扩展名$:锚定字符串结束位置
匹配/不匹配示例
- ✅ 匹配:
test.js、user-profile.jsx、app123.js - ❌ 不匹配:
test.ts(非指定扩展名)、test.js.jsx(多扩展名组合)、.jsx(无文件名主体)、doc.jsx.js(多扩展名)
如果需要支持隐藏文件(比如.config.js这种开头带点的文件名),可以把正则调整为:
^[^.]*\.(js|jsx)$
这个版本允许文件名主体为空(即开头是点),但依然确保整个字符串只有一个点号,不会匹配.js.jsx这类多扩展名的情况。
内容的提问来源于stack exchange,提问作者Lucas Guilleminot
相关产品推荐
相关产品推荐

