我的數據不支持全角和半角字符。所以我需要在插入之前將它們轉義出來。刪除javascript中的全角和半角字符
我相信範圍是U + FF00到U + FFFF
所以我的函數讀取
function escapeZeroWidth(userInput){
return (userInput ? userInput.replace(/[\uFF00-\uFFFF]/g, '') : userInput);
}
但這無法正常運行(不escapin字符)。
代碼有什麼問題嗎?
我的數據不支持全角和半角字符。所以我需要在插入之前將它們轉義出來。刪除javascript中的全角和半角字符
我相信範圍是U + FF00到U + FFFF
所以我的函數讀取
function escapeZeroWidth(userInput){
return (userInput ? userInput.replace(/[\uFF00-\uFFFF]/g, '') : userInput);
}
但這無法正常運行(不escapin字符)。
代碼有什麼問題嗎?
我認爲這是FF00 - FFFE(但這不重要)。我將其更改爲這樣的事情,所以你不鬆ASCII字符:
return userInput.replace(/[\uFF00-\uFFFE]/g, function (char) {
if (char >= '\uFF00' && char <= '\uFF5E') {
return String.fromCharCode(
' '.charCodeAt(0) +
(char.charCodeAt(0) - '\uFF00'.charCodeAt(0)));
}
return '';
});
但是,當你說這是行不通的,也許你要處理其它字符比全寬爲好。
你爲什麼在Javascript中這樣做?這與數據庫限制有什麼關係?爲什麼只有「全角字符」,那麼其他幾十萬個Unicode字符呢?如果您接受任何類型的輸入,請確保您的數據庫可以處理它。如果您只希望某些類型的輸入,則驗證並拒絕服務器上的輸入*。這個問題似乎非常誤導。 – deceze
對不起,我剛剛讀了你的問題。在你的代碼中,似乎你想刪除這些字符,但是你的問題的標題是'Escape'。你想要什麼?你的數據庫是什麼? – hgoebl
關於其他字符的好處,但這需要一個快速補丁,我們有一個或兩個字符只有全寬的問題,雖然我正在做所有全寬字符。 – Akshay