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

TypeScript中如何用正则校验禁止用户输入{[ key .. ]}语法

问题修正方案

错误原因

  • 正则构造错误:用字符串创建RegExp对象时需要处理双重转义,原代码错误将\s写为普通字符s,且{、[、]等正则特殊符号未正确转义,导致正则完全无法匹配目标内容
  • 逻辑冗余:无需遍历所有匹配结果,只要检测到存在任意一次非法调用即可直接返回错误,使用test方法性能更优

修正代码

推荐写法(正则字面量,无需处理双重转义)

// 匹配所有{[ key "xxx" ]}格式的非法调用
const invalidKeyPattern = /{\[\s+key\s+"[^"]+"\s+]}/g
if (invalidKeyPattern.test(value)) {
  return createError({ message: "use {[ env .. ]} instead of {[ key .. ]}" })
}
// 校验通过后续逻辑

RegExp构造函数写法(适合需要动态生成正则的场景)

// 注意字符串内反斜杠需要双重转义
const invalidKeyPattern = new RegExp('{\\[\\s+key\\s+"[^"]+"\\s+]}', 'g')
if (invalidKeyPattern.test(value)) {
  return createError({ message: "use {[ env .. ]} instead of {[ key .. ]}" })
}

正则优化说明

将原正则的.+?替换为[^"]+,匹配效率更高,同时避免了内容包含特殊字符时的意外匹配问题,匹配精准度和性能都更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:54:01