SethShi
0.01D
V2EX  ›  问与答

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

  •  
  •   SethShi · Sep 20, 2025 · 3860 views
    This topic created in 410 days ago, the information mentioned may be changed or developed.
    gmail. v2 都不行
    但是 github 可以,这个有什么依据吗?
    17 replies  •  2025-09-22 09:09:57 +08:00
    beren11129
    beren11129
    Sep 20, 2025❤️1
    1
    东西越少出错的概率越小
    pingdog
    pingdog
    Sep 20, 2025 via Android
    2
    一般旧架构影响没做转义,换新架构也会保留下来
    SethShi
    SethShi
    OP
    Sep 20, 2025
    3
    @beren11129 这太绝对了
    SethShi
    SethShi
    OP
    Sep 20, 2025
    4
    @pingdog 哪个架构呀
    wen20
    wen20
    Sep 20, 2025
    5
    用户名通常规则 数字字母下划线, 不知道为什么是这个规定。
    panlatent
    panlatent
    Sep 20, 2025 via Android
    6
    权衡吧,github 用户名本质上是 slug
    TimePPT
    TimePPT
    Sep 20, 2025❤️1
    7
    1. 好校验
    2. 某些现成的库、框架限制
    3. 避免各种注入攻击
    4. 兼容旧系统(比如老的邮件发送系统)
    TimePPT
    TimePPT
    Sep 20, 2025❤️2
    8
    @TimePPT 说个冷知识,邮件系统中 local-part (也就是 @ 前的用户名)可以区分大小写也可以不区分大小写,没有强制要求,但很多组织的服务是不区分大小写的,所以一般,为了保证到信率,都不区分大小写。
    所以网站如果开放邮箱注册,有经验的程序员都是建议邮箱地址全部转为小写入库的。
    WorseIsBetter
    WorseIsBetter
    Sep 20, 2025❤️1
    9
    @TimePPT #8

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

    我在使用 lists.sr.ht 的时候就遇到过这个问题,好在他们提供了另外一套地址规则作为 fallback
    TimePPT
    TimePPT
    Sep 20, 2025
    10
    @WorseIsBetter 对的,这部分都是比较深入做过登录注册/邮件收发的人才知道。RFC 本身是规范意见,并不是强制标准,所以历史上各种问题五花八门,包袱都很重。比如 RFC 后来扩充邮件地址可以使用非 ASCII 字符,但一般……还真不敢用,很多主流邮件运营商会作为垃圾邮件拒绝收发。
    登录注册这块,很多提供邮箱注册的,为了省事,都是只能用主流的邮件服务商的邮箱域注册,且 local-part 故意很严格。
    所以,我甚至建议,注册服务的开发,能用三方登录,都别用邮箱,维护成本比较高。
    weiwoxinyou
    weiwoxinyou
    Sep 20, 2025❤️1
    11
    数字字母下划线正则太简单了,如非必要,勿增实体。可以在控制台尝试打印以下 js:
    console.log(/^\w+$/.test('a_b'),/^\w+$/.test('a-b'))
    SethShi
    SethShi
    OP
    Sep 21, 2025
    12
    @wen20 不知道什么老传统
    SethShi
    SethShi
    OP
    Sep 21, 2025
    13
    @panlatent 所以为什么其他网站不行
    SethShi
    SethShi
    OP
    Sep 21, 2025
    14
    @TimePPT 检验这个说不过去,这么大网站了也不是什么难题,@Livid 能解答一下吗
    SethShi
    SethShi
    OP
    Sep 21, 2025
    15
    @weiwoxinyou 感觉这个不是理由
    TimePPT
    TimePPT
    Sep 21, 2025 via Android
    16
    @SethShi 我说的是一般情况,跟 V2EX 站点策略无关哈。
    junyee
    junyee
    Sep 22, 2025
    17
    可能是为了方便检测. 正则判断中 \w 中不含 '-' .
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3406 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 10:31 · PVG 18:31 · LAX 02:31 · JFK 05:31
    ♥ Do have faith in what you're doing.