You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置require.context的正则仅匹配以1-开头的js文件?

你当前使用的/^1-.*\.js$/正则无法生效,核心原因是require.context的正则匹配对象是包含相对路径层级的完整路径字符串,而非纯文件名。比如放在子目录下的1-asd.js,传入正则的匹配值会是./子目录名/1-asd.js,路径开头的./和目录前缀会直接导致^1-的开头匹配规则失效。

方案1:匹配所有层级下符合规则的文件(递归扫描子目录)

使用以下正则即可匹配所有文件名以1-开头的.js文件,不受目录层级影响:

const folders = require.context("@/views", true, /\/1-[^/]+\.js$/, "lazy")

正则规则说明:

  • \/:匹配文件名前的最后一个路径分隔符/,锚定到文件名的起始位置
  • 1-:匹配文件名要求的开头前缀
  • [^/]+:匹配文件名中除路径分隔符外的任意字符,避免跨目录匹配
  • \.js$:匹配.js后缀,确保匹配路径以.js结尾

匹配效果验证:

  • ./1-asd.js → 匹配成功
  • ./business/1-order.js → 匹配成功
  • ./2-user.js → 匹配失败
  • ./business/2-goods.js → 匹配失败
  • ./1-config.json → 匹配失败

方案2:仅匹配根目录下的符合规则的文件

如果你不需要扫描子目录,只需要匹配@/views根目录下的文件,可以把第二个参数设为false关闭递归,原正则即可正常生效:

const folders = require.context("@/views", false, /^1-.*\.js$/, "lazy")

这种场景下传入正则的匹配值就是根目录下的纯文件名,没有路径前缀,因此开头匹配^1-可以正常命中。

内容的提问来源于stack exchange,提问作者Mert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:15:02