解决 JS 正则转成字符串后出现乱码?

作者站长头像
站长
· 阅读数 22

解决 JS 正则转成字符串后出现乱码?

在应用中,我需要将该正则放到键值对并进行 JSON.stringify,但这一做法会导致正则中的 \u4e00-\u9fa5 发生乱码,尝试了多种方法,但当赋值时就已经发生变化,有没有大佬知道要怎么解决?

// 当 presetRegs 作为下拉选项时,value 就已经乱码了
const presetRegs = [{ label: "文字限制(中文)", value: "/^(?:[\u4e00-\u9fa5·]{2,16})$/" }];

// 最终表单中的 expression 字段拿到的也是乱码值
const form = reactive({
    ...,
    options: {
        rules: [
            { expression: "/^(?:[一-龥·]{2,16})$/", errorMsg: "写个中文吧" }
        ]
    }
});

form.options = JSON.stringify(form.options);

// post form
回复
1个回答
avatar
test
2024-06-25

answer image\u4e00是汉字'一'的unicode编码,\u9fa5是汉字'龥'的unicode编码,并没有出现乱码answer image正则表达式也能正常运行

answer image.codePointAt().toString(16)方法可以返回字符的unicode编码String.prototype.codePointAt() - JavaScript | MDN

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容