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

正则表达式在ESLint与TS中出现八进制转义序列错误求助

解决RegExp构造函数中八进制转义序列错误的问题
  • 错误原因:JavaScript字符串里,\1会被解析为八进制转义序列(对应ASCII控制字符),而非正则表达式需要的反向引用标识。使用RegExp构造函数时,传入的字符串参数会先经过JS引擎解析,直接触发ESLint/TypeScript的八进制转义禁用规则。

  • 修复方法:把正则字符串中的单个反斜杠\替换为双反斜杠\\,确保JS解析后保留\1,让正则引擎正确识别为反向引用。

修正后的代码示例:

const key = 'test';
// 转义反斜杠后的正则构造
const regex = new RegExp('^' + key + '=([" ])?(.*)(?(1)\\1|)$', 'm');

如果用ES6模板字符串,写法更直观:

const key = 'test';
const regex = new RegExp(`^${key}=([" ])?(.*)(?(1)\\1|)$`, 'm');

额外提示:如果你的需求是匹配可选的引号(不含空格),可以调整正则中的([" ])为(["'])?,同时将捕获组改为非贪婪匹配.*?,避免匹配多余字符:

const regex = new RegExp(`^${key}=(["'])?(.*?)(?(1)\\1|)$`, 'm');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:27:15