gpt4 book ai didi

javascript - 有没有更好的方法来使用 javascript 清理输入?

转载 作者:数据小太阳 更新时间:2023-10-29 04:12:45 26 4
gpt4 key购买 nike

我想编写一个 javascript 函数来清理用户输入并删除任何不需要的和危险的字符。

它必须只允许以下字符:

  • 字母数字字符(不区分大小写):[a-z][0-9]。
  • 内部空白,如“word1 word2”。
  • 西类牙字符(不区分大小写):[áéíóúñü]。
  • 下划线和连字符 [_-]。
  • 点和逗号 [.,].
  • 最后,必须使用 trim() trim 字符串。

我的第一次尝试是:

function sanitizeString(str){
str = str.replace(/[^a-z0-9áéíóúñü_-\s\.,]/gim,"");
return str.trim();
}

但如果我这样做了:

sanitizeString("word1\nword2")

它返回:

"word1
word2"

所以我不得不重写函数以明确删除\t\n\f\r\v\0:

function sanitizeString(str){
str = str.replace(/([^a-z0-9áéíóúñü_-\s\.,]|[\t\n\f\r\v\0])/gim,"");
return str.trim();
}

我想知道:

  1. 有没有更好的方法来使用 javascript 清理输入?
  2. 为什么\n 和\t 在第一版 RegExp 中不匹配?

最佳答案

sanitizeString 函数的新版本:

function sanitizeString(str){
str = str.replace(/[^a-z0-9áéíóúñü \.,_-]/gim,"");
return str.trim();
}

@RobG 和@Derek 提到了主要问题:(@RobG 写下您的评论作为答案,我会接受它)\s 现在不代表什么 w3Schools says

Find a whitespace character

这意味着什么 MDN says

Matches a single white space character, including space, tab, form feed, line feed. Equivalent to [ \f\n\r\t\v​\u00a0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​\u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​​\u202f\u205f​\u3000].

我在编写函数时信任 w3Schools。

第二个更改是将破折号 (-) 移到末尾,以避免它的范围分隔符含义。

  • 注意 1:这是使用 javascript 的服务器端验证。
  • 备注 2:(对于 IBM Notes XPagers)我喜欢 XPages SSJS 中的 javascript。这是对我来说比 Java 方式更简单。

关于javascript - 有没有更好的方法来使用 javascript 清理输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23187013/

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