【问题标题】:JS: how to remove "spammy invisible chars"? [duplicate]JS:如何删除“垃圾邮件隐形字符”? [复制]
【发布时间】:2020-07-30 22:36:19
【问题描述】:

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

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

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

s.length 给出 14 而不是 9!

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

【问题讨论】:

  • 我已经有一段时间没有搞砸了,但你有没有试过拆分字符串?然后通过循环测试每个字符?
  • 如果遇到相同问题的任何人看到此问题,以下似乎可行:str.replace(/\p{C}/gu, '');。请注意,此功能需要 u 标志。不过,我不确定这是否适用于所有隐形字符(有点难以测试)

标签: javascript utf-8


【解决方案1】:

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

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>

【讨论】:

  • 这不是检查可打印字符,而是仅检查 ASCII 字符。
  • 你能解释一下这个正则表达式吗?
猜你喜欢
  • 2021-08-30
  • 1970-01-01
  • 2020-10-08
  • 2013-04-27
  • 2019-04-11
  • 2014-02-16
  • 1970-01-01
  • 2016-08-16
  • 2019-04-16
相关资源
最近更新 更多