我的数据库不支持全角和半角字符。所以我需要在插入前对它们进行转义。
我相信范围是从U+FF00到U+FFFF
所以我的函数是
function escapeZeroWidth(userInput){
return (userInput ? userInput.replace(/[\uFF00-\uFFFF]/g, '') : userInput);
}
但这并不像预期的那样工作(不是转义字符)。
代码中有什么错误吗?
发布于 2013-12-18 10:05:39
我认为它是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 '';
});
但是当你说它不工作时,也许你也必须处理全角以外的其他字符。
https://stackoverflow.com/questions/20654380
复制