首页 > 解决方案 > JS:如何删除“垃圾邮件隐形字符”?

问题描述

一些用户充斥着一些绕过正则表达式过滤器的字符。当我将这些字符粘贴到 UTF8 编辑器中时,它们看起来相同(除了洪水版本不能完全选择:似乎插入了一些不可见的字符

在此处输入图像描述

而当你切换到 ANSI 编码时,你会清楚地看到 2 个词 liebehomo lâ€iâ€ebâ€ehâ€oâ€mo 的区别

当我将垃圾信息粘贴到开发人员工具中时,我得到

在此处输入图像描述

s.length 给出 14 而不是 9 !

在此处输入图像描述

所以我的问题是:如何过滤这些包含一些奇怪字符的垃圾邮件?

标签: javascriptutf-8

解决方案


可能就像首先替换任何不可打印的字符一样简单:

string = string.replace(/[^ -~]+/g, "");

document.getElementById('demo').addEventListener('input', function(e) {
    e.target.innerHTML = e.target.innerHTML.replace(/[^ -~]+/g, "");
    console.log(e.target.innerHTML);
});
<textarea id="demo"></textarea>


推荐阅读