好奇很多网站用户名都不允许带 - 中划线?是为什么?

1 天前
 SethShi
gmail. v2 都不行
但是 github 可以,这个有什么依据吗?
2020 次点击
所在节点    问与答
17 条回复
beren11129
1 天前
东西越少出错的概率越小
pingdog
1 天前
一般旧架构影响没做转义,换新架构也会保留下来
SethShi
1 天前
@beren11129 这太绝对了
SethShi
1 天前
@pingdog 哪个架构呀
wen20
1 天前
用户名通常规则 数字字母下划线, 不知道为什么是这个规定。
panlatent
1 天前
权衡吧,github 用户名本质上是 slug
TimePPT
1 天前
1. 好校验
2. 某些现成的库、框架限制
3. 避免各种注入攻击
4. 兼容旧系统(比如老的邮件发送系统)
TimePPT
1 天前
@TimePPT 说个冷知识,邮件系统中 local-part (也就是 @ 前的用户名)可以区分大小写也可以不区分大小写,没有强制要求,但很多组织的服务是不区分大小写的,所以一般,为了保证到信率,都不区分大小写。
所以网站如果开放邮箱注册,有经验的程序员都是建议邮箱地址全部转为小写入库的。
WorseIsBetter
1 天前
@TimePPT #8

还有一点就是 "~" 和 "/" 都是可以用于 local-part 的合法字符( RFC 5322 ),但是很多 MTA 不支持(包括我常用的某老牌企业邮箱),导致一些基于电子邮件的服务(比如邮件列表)无法正常使用。

我在使用 lists.sr.ht 的时候就遇到过这个问题,好在他们提供了另外一套地址规则作为 fallback
TimePPT
1 天前
@WorseIsBetter 对的,这部分都是比较深入做过登录注册/邮件收发的人才知道。RFC 本身是规范意见,并不是强制标准,所以历史上各种问题五花八门,包袱都很重。比如 RFC 后来扩充邮件地址可以使用非 ASCII 字符,但一般……还真不敢用,很多主流邮件运营商会作为垃圾邮件拒绝收发。
登录注册这块,很多提供邮箱注册的,为了省事,都是只能用主流的邮件服务商的邮箱域注册,且 local-part 故意很严格。
所以,我甚至建议,注册服务的开发,能用三方登录,都别用邮箱,维护成本比较高。
weiwoxinyou
1 天前
数字字母下划线正则太简单了,如非必要,勿增实体。可以在控制台尝试打印以下 js:
console.log(/^\w+$/.test('a_b'),/^\w+$/.test('a-b'))
SethShi
16 小时 33 分钟前
@wen20 不知道什么老传统
SethShi
16 小时 32 分钟前
@panlatent 所以为什么其他网站不行
SethShi
16 小时 31 分钟前
@TimePPT 检验这个说不过去,这么大网站了也不是什么难题,@Livid 能解答一下吗
SethShi
16 小时 31 分钟前
@weiwoxinyou 感觉这个不是理由
TimePPT
16 小时 5 分钟前
@SethShi 我说的是一般情况,跟 V2EX 站点策略无关哈。
junyee
6 小时 1 分钟前
可能是为了方便检测. 正则判断中 \w 中不含 '-' .

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

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

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

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

© 2021 V2EX