如何编写正则表达式匹配所有JS/CSS文件并排除config.js?
正则匹配问题:匹配JS/CSS文件但排除config.js
需求与现有尝试
- 目标:从包含js、css、json、md等类型的文件列表中,匹配所有js和css文件,但排除
config.js - 单独验证有效的正则:
- 排除
config.js的正则:/^(?!.*config).*$/ - 匹配JS/CSS文件的正则:
/\.(js|css)$/
- 排除
- 尝试的无效组合正则:
/^(?!.*config)(?=\.(js|css)).*$/
问题分析
你尝试的组合正则失效的原因是:(?=\.(js|css))是正向预查,它要求字符串起始位置就匹配.js或.css,但实际文件名(比如app.js)开头是文件名主体,不是后缀,所以这个预查永远不成立,导致整体匹配失败。
正确的正则写法
写法一:精确排除config.js,匹配其他JS/CSS文件
/^(?!.*config\.js$).*\.(js|css)$/
- 细节说明:
(?!.*config\.js$):负向预查,确保整个字符串不是config.js(也会排除路径中包含config.js的文件,比如src/config.js).*\.(js|css)$:匹配任意内容结尾是.js或.css的字符串
写法二:排除所有含config的JS/CSS文件(更简洁)
如果不需要精确排除config.js,而是要排除所有文件名包含config的JS/CSS文件(比如config.css、app.config.js),可以用:
/^(?!.*config).*\.(js|css)$/
验证示例
- 匹配成功:
app.js、style.css、utils.js - 匹配失败:
config.js、data.json、readme.md、config.css(写法二会排除)
内容的提问来源于stack exchange,提问作者tristan
相关产品推荐
相关产品推荐

