零宽度字符是一种字节宽度为0的不可打印的Unicode字符,简而言之,他是一种不可见的字符

1
2
3
let a="我有字符"
let b="我有字符"
console.log(a===b) //false

上述代码出现的原因 就是因为这个零宽字符的出现
当你去打印这两个变量的长度时,他们的长度是不相等的
想要见到这些零宽字符 可以使用vim编辑器

那如何解决上面的问题 我们可以通过正则进行处理

1
2
3
4
// 封装成函数
clean_zero=(text='')=>{
text.trim().replace(/[\u200B-\u200D\uFEFF]/g, "");
}
零宽字符的用处:

1.数据防爬 将零宽度字符插入关键词文本中,使得匹配关键字时不能正确匹配,但是不影响用户的正常阅读
2.信息隐藏(可做水印)

总结

这是个不常遇到的问题,且遇到后处理起来也较为麻烦,如果不知道零宽字符的概念,挺难找出问题所在,在此记录一下