我想编写一个javascript函数来清理用户输入并删除任何不需要的和危险的字符。
必须只允许以下字符:
我的第一次尝试是:
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();
}
我想知道:
答案 0 :(得分:5)
新版 sanitizeString 功能:
function sanitizeString(str){
str = str.replace(/[^a-z0-9áéíóúñü \.,_-]/gim,"");
return str.trim();
}
@RobG和@Derek提到了主要问题:(@ RobG写下您的评论作为答案,我会接受它)\ s并不意味着现在w3Schools says
找一个空格字符
这意味着MDN says
匹配单个空格字符,包括空格,制表符,表单 饲料,换行。相当于 [ \˚F\ n \ r \吨符\ v \ u00a0 \ u1680 \ u180e \ U2000 \ U2001 \ u2002 \ u2003 \ u2004 \ u2005 \ u2006 \ u2007 \ u2008 \ u2009 \ u200a \ u2028 \ u2029 \ u202f \ u205f \ U3000]。
当我写这个函数时,我信任w3Schools。
第二个更改是将短划线字符( - )移到最后,以避免它的范围分隔符含义。