【问题标题】:Twitter Name ValidationTwitter 名称验证
【发布时间】:2012-07-06 11:07:45
【问题描述】:

在我们的注册表单中,我们现在想要要求用户输入他们的推特名称(例如@paul)。

谁能告诉它允许使用哪些字符?

例如a-z、A-Z、下划线、0-9

还有什么?

【问题讨论】:

    标签: regex twitter


    【解决方案1】:

    相信只有字母、数字和下划线,最多 15 个字符。

    快速搜索发现这篇文章(非 Twitter)涉及相同的主题:

    http://kagan.mactane.org/blog/2009/09/22/what-characters-are-allowed-in-twitter-usernames/

    上面的帖子还包含帮助您验证的正则表达式示例:

    Full regex – /^[a-zA-Z0-9_]{1,15}$/
    Perl-compatible regex – /^\w{1,15}$/
    

    【讨论】:

    • 还有一点值得注意的是,15 个字符的限制曾经是 20 个字符。您可能需要调整您的正则表达式或其他任何内容以适应旧名称。
    【解决方案2】:

    这是最终的 JavaScript 函数:

    function validTwitteUser(sn) {
        return /^[a-zA-Z0-9_]{1,15}$/.test(sn);
    }
    

    【讨论】:

      【解决方案3】:

      在 Twitter 上查看此页面以获取官方指南/规则

      http://support.twitter.com/articles/101299-why-can-t-i-register-certain-usernames#

      【讨论】:

        【解决方案4】:

        对于 JavaScript / TypeScript:

        首先,

        npm i twitter-text
        # or
        yarn add twitter-text
        

        那么,

        import { isValidUsername } from 'twitter-text'
        
        console.log(isValidUsername('@helloworld')) // true
        

        还有其他实现(Java、Ruby、ObjC),请看https://github.com/twitter/twitter-text


        注意:捆绑包太大,仅用于字符串验证...

        【讨论】:

          【解决方案5】:

          虽然这里的正则表达式看起来都正确,但它们都允许少于 4 个字符通过验证。根据twitter

          • 您的用户名不能超过 15 个字符。你的名字可以是 长于(50 个字符)或短于 4 个字符,但用户名 为了方便起见,保持较短。
          • 用户名只能包含字母数字字符(字母 A-Z、 数字 0-9),下划线除外,如上所述。查看 确保您想要的用户名不包含任何符号, 破折号或空格。

          因此,正确的正则表达式是:

          /^[a-zA-Z0-9_]{4,15}$/
          

          如果有人挑剔,那么你也不能使用 Twitter 或 Admin 这个词,就我的目的而言,以上就足够了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多