当input输入看不见的符号时
2023-9-22背景
当你的用户在微信复制了一串url到你们家input框的时候,1比1手输验证通过,就是复制粘贴不行,输入法也没问题…..
原因
经过排查你发现用户是复制了一些看不见的符号(Unicode \u200b)…
https://c.runoob.com/front-end/3602/ (测试)
解决
你无法确定哪些Unicode是不可打印的,无法正向过滤,只知道ASCII(128)是最常见的,但是ASCII<Unicode < utf-8, 那么只能结合需求缩小范围…
eg:
String.fromCharCode(8000) //'ὀ'
escape('ὀ') //'%u1F40' '\u1F40'
'ὀ'.charCodeAt() //8000
unescape('\u1F40') //ὀ
那么正向正则为:
/[\u1F40-\uFFFF]/