gpt4 book ai didi

javascript - 需要一种基于 token 标准保护性地替换用户输入的方法

转载 作者:行者123 更新时间:2023-11-30 20:58:20 25 4
gpt4 key购买 nike

我有一个允许用户输入 token 的输入(即文本框)。

> Hello {{firstname}} {{lastname}}!

这些 token 一旦到达服务器就会被用户数据替换。我想实现一些保护方法,在提交之前“修复”输入。

因此,例如,以下应修复/更改为 {{firstname}}

  • {{名字}}
  • {名字}
  • {{FirstName}}
  • {{FirstName}}
  • {{名字}}
  • {{名字}}
  • 其他变化...

我正在尝试这样的事情,但它肯定不是最优的并且容易出现问题:

var properFirstName = "{{firstname}}";
var replaceValues = {
"firstname": properFirstName,
"{{first name}}": properFirstName,
"{firstname}": properFirstName
};

for (var txt in replaceValues) {
var rx = new RegExp(txt, "ig");
this.formData.message = this.formData.message.replace(rx, replaceValues[txt]);
}

我上面的例子失败了,特意指出了一些问题(Value 在它周围有许多括号 {{{{firstname}}}} 并且在每个模糊事件上都有更多)。所以这个 token 和其他几个我需要一个更聪明的方法来评估像这样的东西:

  • 任何类似于“firstname”标记的东西,两边都缺少适当的括号?
  • 任何类似于“firstname”标记的东西都有空格或其他问题?

大小写没什么大不了的,我什至可以更改服务器端的方法来忽略大小写,但其余的我想在提交之前在客户端解决。

除此之外,也许我需要取消对“名字”之类的保护措施……永远不知道什么时候有人会出于任何奇怪的原因故意输入它。也许搜索/更正总是在值周围寻找至少一个大括号?我不希望我的保护性编程实际上成为绊脚石。

最佳答案

您可以使用以下解决方案:

var properFirstName = "{{firstname}}";
var replaceValues = /{*\s*first\s*name\s*}*/i;
var message = "{ \nfirst\tName}}";
message = message.replace(replaceValues, "{{firstname}}");
console.log(message);

模式是/{*\s*first\s*name\s*}*/i,见regex demo .

详情

  • {* - 0+ {
  • \s* - 0+ 个空格
  • first - 文字子串
  • \s* - 0+ 个空格
  • name - 文字子串
  • \s* - 0+ 个空格
  • }* - 0+ }s.

关于javascript - 需要一种基于 token 标准保护性地替换用户输入的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47402942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com