我的数据库不支持全宽和半宽字符。所以我需要在插入之前逃脱它们。
我认为范围是U + FF00到U + FFFF
所以我的函数读取
function escapeZeroWidth(userInput){
return (userInput ? userInput.replace(/[\uFF00-\uFFFF]/g, '') : userInput);
}
但这并不像预期的那样有效(不是escapin chars)。
代码有什么问题吗?
答案 0 :(得分:2)
我认为这是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 '';
});
但是当你说它不起作用时,也许你必须处理其他角色而不是全角。