奇妙的隱形字符

遇到的問題

QA大大從使用公司的內部文檔編輯器書寫的文章中複製出來一串字符會被前端校驗邏輯攔截,這個邏輯是校驗數字&字母的正則表達式,在輸入框最左側按一下delete鍵就會經過校驗(對於他發現這個操做表示神奇)。前端

解決

初步猜想是由於複製出了空格,可是本地測試發現QA提供的字符串即便作了trim()操做仍然不經過校驗,後來在控制檯直接用正則表達式嘗試校驗,發現將QA提供的字符串複製到控制檯變成了有小紅點的字符串,如圖
image
將鼠標懸浮在小紅點上顯示爲字符\u200b,最後str.replace(/\u200B/g,'')去除隱形字符串後正常了。正則表達式

探究

不可見字符在計算機科學和通訊學中被稱爲控制字符或非打印字符,是字符集中的一個碼位(code point),不是一個書面符號,也就是在通常的書面呈現環境中它是不可見字符。
咱們常見的/n,/r就是這類字符,咱們能夠嘗試新建一個這樣的字符串變量而後console出來是看不見的,可是咱們去查看該字符串的長度卻不等於0。編輯器

啓發

關於這個隱形字符串,咱們能夠利用起來作一些隱形簽名或者水印。因此猜想我遇到這個隱形字符是來自公司內部編輯器作的水印,文章被複制的化根據這寫隱形字符來判斷是不是本身的文章被盜用。測試

相關文章
相關標籤/搜索