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

使用express-validator转义后前端无法渲染原符号的问题求助

解决JSX渲染HTML实体显示异常的问题

问题根源

你用express-validator的escape()把输入的/转成了HTML实体/,而React JSX默认会对字符串做转义处理——也就是说,当你渲染2/1时,JSX会把&再转成&,最终页面直接显示转义后的实体串,而非解析成2/1。

方案一:后端取消不必要的转义(推荐)

你的matches规则已经限定了允许的字符范围:[A-Za-z\d ._\-)(\\/]*,其中包含了/,这些字符本身都是安全的,不需要用escape()转义。直接去掉escape()步骤,存入数据库的就是原始的2/1,前端渲染时自然显示正确。

调整后的验证代码:

body("abbreviation")
  .notEmpty()
  .isLength({ min: 2, max: 11 })
  .trim()
  // 移除escape()
  .matches(/[A-Za-z\d ._\-)(\\/]*/)

方案二:前端解析HTML实体(仅适用于已存储实体的情况)

如果数据库里已经存了2/1这类实体,不想修改后端的话,可以用React的dangerouslySetInnerHTML强制解析HTML实体。注意:只有当你能100%确定内容安全(比如经过严格后端验证,无恶意代码)时再用,避免XSS攻击风险。

修改前端渲染代码:

<h2 dangerouslySetInnerHTML={{ __html: classAbbreviation }}></h2>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:35:18