特殊不可见字符致使excel数据校验出错

前情提要

昨天晚上,忽然有运营过来讲,导入excel的时候,校验数据时有一个电话号码一直报错:电话号码不正确,当时百思不得其解,但因为时间太晚,因此放到次日再来处理。html

发现问题

一大早跑到公司,第一件事就是修复这个bug,最开始觉得是空格的缘由,由于电话号码是没有作去空格处理的,加上!立马加上!可是测试下来依旧是报错,没办法,只能找到后端一块儿解决问题,后端立刻发现了问题,电话号码没有经过正则校验:^(1)\d{10}$。 因而先手动输入这个号码进行校验,发现是能够经过的,那么立刻就想到了多是数据问题,而后去传入的参数处复制该号码,发现也能经过校验,因而就认定了,锅确定是后端的,甩就完事了。 后端最开始觉得是传入过程当中不当心加入了空格,致使正则校验失败,因而加上去除空格,可是发现仍是不行,并且发现只有这个excel的某个单元格输入任何号码都报错,因而我又去参数处取值,这时将引号也取进去,而后删除引号,进行校验,没法经过! 这时就意识到是这个数据出现了问题,因而对11111111111进行unicode编码,结果为前端

‭11111111111
复制代码

问题出现了,转码后的长度为12,并且暴露出了一个奇怪的东西:&#8237。 问题出现以后,就是查资料了,结果发如今某些操做系统或者某些版本的excel下,会加上某些不可见的编码,这也是为何前端和后端打印的时候都没打印出来,也没发现异常,只需对此字符串处理删除特殊字符便可git

str=str.toString().replace(/[\u200b-\u200f\uFEFF\u202a-\u202e]/g, "")
复制代码

最后

问题解决了,也是第一次知道会有这类不可见字符,看来须要学习的路仍是至关漫长的,哈哈。 同时个人前端excel处理插件pikaz-excel-js中的导入部分也加入了去除空格和特殊字符的功能,欢迎你们来提issue,一块儿完善它,谢谢。github

相关文章
相关标签/搜索