昨天晚上,忽然有運營過來講,導入excel的時候,校驗數據時有一個電話號碼一直報錯:電話號碼不正確,當時百思不得其解,但因爲時間太晚,因此放到次日再來處理。html
一大早跑到公司,第一件事就是修復這個bug,最開始覺得是空格的緣由,由於電話號碼是沒有作去空格處理的,加上!立馬加上!可是測試下來依舊是報錯,沒辦法,只能找到後端一塊兒解決問題,後端立刻發現了問題,電話號碼沒有經過正則校驗:^(1)\d{10}$。 因而先手動輸入這個號碼進行校驗,發現是能夠經過的,那麼立刻就想到了多是數據問題,而後去傳入的參數處複製該號碼,發現也能經過校驗,因而就認定了,鍋確定是後端的,甩就完事了。 後端最開始覺得是傳入過程當中不當心加入了空格,致使正則校驗失敗,因而加上去除空格,可是發現仍是不行,並且發現只有這個excel的某個單元格輸入任何號碼都報錯,因而我又去參數處取值,這時將引號也取進去,而後刪除引號,進行校驗,沒法經過! 這時就意識到是這個數據出現了問題,因而對11111111111進行unicode編碼,結果爲前端
‭11111111111
複製代碼
問題出現了,轉碼後的長度爲12,並且暴露出了一個奇怪的東西:‭。 問題出現以後,就是查資料了,結果發如今某些操做系統或者某些版本的excel下,會加上某些不可見的編碼,這也是爲何前端和後端打印的時候都沒打印出來,也沒發現異常,只需對此字符串處理刪除特殊字符便可git
str=str.toString().replace(/[\u200b-\u200f\uFEFF\u202a-\u202e]/g, "")
複製代碼
問題解決了,也是第一次知道會有這類不可見字符,看來須要學習的路仍是至關漫長的,哈哈。 同時個人前端excel處理插件pikaz-excel-js中的導入部分也加入了去除空格和特殊字符的功能,歡迎你們來提issue,一塊兒完善它,謝謝。github