2
我想編寫一個javascript函數來清理用戶輸入並刪除任何不需要的和危險的字符。有沒有更好的方式來消毒輸入與JavaScript?
它必須僅允許下列字符:
- Alfanumeric字符(區分insentitive):[A-Z] [0-9]。
- 內部空格,如「word1 word2」。
- 西班牙文字符(案件不知情):[áéíóúñü]。
- 下劃線和連字符[_-]。
- 點和逗號[。,]。
- 最後,必須使用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();
}
我想知道:
- 是否有更好的方法來淨化輸入的JavaScript?
- 爲什麼\ n和\ t在第一個版本RegExp中不匹配?
節省自己一些時間,不要打擾,請在服務器上執行。 Javascript過濾太容易繞過 – andrew
其實我在服務器上用SSJS做這件事,因爲我在後端使用XPages。如果我使用Node.js,我可以這麼說。 :) –
你正在用'\ s'來允許換行,製表符等。如果您只想允許空格,請改用正則表達式中的空格。 – RobG