奇妙的隐形字符

遇到的问题

QA大大从使用公司的内部文档编辑器书写的文章中复制出来一串字符会被前端校验逻辑拦截,这个逻辑是校验数字&字母的正则表达式,在输入框最左侧按一下delete键就会经过校验(对于他发现这个操做表示神奇)。前端

解决

初步猜想是由于复制出了空格,可是本地测试发现QA提供的字符串即便作了trim()操做仍然不经过校验,后来在控制台直接用正则表达式尝试校验,发现将QA提供的字符串复制到控制台变成了有小红点的字符串,如图
image
将鼠标悬浮在小红点上显示为字符\u200b,最后str.replace(/\u200B/g,'')去除隐形字符串后正常了。正则表达式

探究

不可见字符在计算机科学和通讯学中被称为控制字符或非打印字符,是字符集中的一个码位(code point),不是一个书面符号,也就是在通常的书面呈现环境中它是不可见字符。
咱们常见的/n,/r就是这类字符,咱们能够尝试新建一个这样的字符串变量而后console出来是看不见的,可是咱们去查看该字符串的长度却不等于0。编辑器

启发

关于这个隐形字符串,咱们能够利用起来作一些隐形签名或者水印。因此猜想我遇到这个隐形字符是来自公司内部编辑器作的水印,文章被复制的化根据这写隐形字符来判断是不是本身的文章被盗用。测试

相关文章
相关标签/搜索