在javascript中删除全宽和半宽字符

时间:2013-12-18 09:37:39

标签: javascript regex encoding

我的数据库不支持全宽和半宽字符。所以我需要在插入之前逃脱它们。

我认为范围是U + FF00到U + FFFF

所以我的函数读取

function escapeZeroWidth(userInput){
    return (userInput ? userInput.replace(/[\uFF00-\uFFFF]/g, '') : userInput);
}

但这并不像预期的那样有效(不是escapin chars)。

代码有什么问题吗?

1 个答案:

答案 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 '';
});

但是当你说它不起作用时,也许你必须处理其他角色而不是全角。