请教大佬如何辨别字符串区别

2020-05-26 09:58:29 +08:00
 thinkwei2012

以 js 正则为例,如何区分 s1 和 s2 的不同? s1 是复制用户的,s2 是手打的 起初还以为是正则出了问题

let s1 = '64165269‬B';
let s2 = '64165269B';

console.log(/^[0-9A-z]{8,11}$/.test(s1));
console.log(/^[0-9A-z]{8,11}$/.test(s2));
1195 次点击
所在节点    问与答
5 条回复
remarrexxar
2020-05-26 10:04:27 +08:00
console.log(charToUnicode(s1))
\\ u0036 \\ u0034 \\ u0031 \\ u0036 \\ u0035 \\ u0032 \\ u0036 \\ u0039 \\ u202c \\ u0042
console.log(charToUnicode(s2))
\\ u0036 \\ u0034 \\ u0031 \\ u0036 \\ u0035 \\ u0032 \\ u0036 \\ u0039 \\ u0042

多了不可见字符
Vegetable
2020-05-26 10:13:59 +08:00
如果你只是确定的话,可以用方向键移动光标看看有没有不可见字符。
也可以保存两个文件用 diff 或者 git diff 之类工具。
代码里最好 trim 一下,有时候复制会在前后添加莫名其妙的字符。
thinkwei2012
2020-05-26 10:23:25 +08:00
@remarrexxar 感谢,根据 \u202c 搜索了下,很有可能是用户从 excel 里直接复制粘贴的
wysnylc
2020-05-26 10:24:06 +08:00
lululau
2020-05-26 10:26:37 +08:00
pbpaste | cat -v
pbpaste | od -Ad -tc

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/675494

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX