背景
有一个新增仓库输入框,客户新建仓库时把仓库负责人手机号+地址作为仓库名称。 系统禁止相同的仓库名称。
由于从IOS11 通讯录中拷贝的电话号码是有空格分割的,拷贝时可能带有【双向文本uniCode控制字符】;
去掉拷贝空格分割
function trimAll(str) {
//15200009999
return str.replace(/\s*/g, '');
}
bug出现
在IOS11.2中,空格已经去掉了,但是校验时,还是通不过。说明这个看起来干净的号码中一定含有不可见的字符。
验证:
'15200009999'.length === 13
Unicode转码:\u202d15200009999\u202c
前后出现uniCode编码字符;
解决方案
对填写的仓库名称进行uniCode编码字符进行替换
function trimAll(str) {
return str.replace(/[\u061C\u200E\u200F\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069\s]*/g, '');
}