Javascript 使用正则表达式验证用户名

Javascript 使用正则表达式验证用户名,javascript,regex,Javascript,Regex,用户名中唯一的数字必须在末尾。最后可以有零个或多个 用户名字母可以是小写和大写 用户名必须至少有两个字符长。两个字母的用户名只能使用字母字符 我正在尝试这个,但我被拖延了/\d+$\w+/gi /^[a-z]{2,}\d*$/i是: ^ : the begining [a-z] : a character (a to z), you can add as many allowed characters as you want {2,} : at least 2 of them \d*

用户名中唯一的数字必须在末尾。最后可以有零个或多个

  • 用户名字母可以是小写和大写

  • 用户名必须至少有两个字符长。两个字母的用户名只能使用字母字符

  • 我正在尝试这个,但我被拖延了<代码>/\d+$\w+/gi

    /^[a-z]{2,}\d*$/i
    是:

    ^     : the begining
    [a-z] : a character (a to z), you can add as many allowed characters as you want
    {2,}  : at least 2 of them
    \d*   : 0 or more digits 
    $     : the end
    i     : ignore case sensetivity (both lowercases and uppercases are allowed)
    

    具有字符和数字且长度至少为2个字符的用户名

    /^[a-zA-Z]{2,}\d*$/i
    
    测试结果:

    UserNam9 = pass
    9username = fail
    Userna99 = pass
    usernameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee = pass
    Us = pass
    U = fail
    

    如果开头有一个字母,后面跟着两个或更多数字,您就错过了一些案例

    U99 = fail
    d345 = fail
    
    我的解决方案也通过了以下测试:

    /^[a-z]{2,}\d*$|(?=\w{3,})^[a-z]{1,}\d+$/i
    

    使用正向前瞻,我确保在第二种情况下至少有3个字母数字字符。

    简化版的
    /^[a-z]{2,}\d*$|(?=\w{3,})^[a-z]{1,}\d+$/I

    /^\D(\d{2,}|\D+)\d*$/i
    
    代码说明:

  • ^
    -开始输入
  • \D
    -第一个字符是字母
  • \d{2,}
    -以两个或多个数字结尾
  • |
    -或
  • \D+
    -下一个有一个或多个字母
  • \d*
    -以零或多个数字结尾
  • $
    -输入结束
  • i
    -忽略输入的大小写

  • 这是我的答案,它通过了所有的测试:

    /^[a-z][a-z]+\d*$|^[a-z]\d{2,}$/i
    
    • 第一部分:2个字母(或更多)和零个或更多数字
    • 第二部分:1个字母和2个或更多数字

    根据经验,不要使用用户名,只需使用电子邮件和显示名称(他们可以根据需要放置任何内容)。没有人想为另一个站点保留另一个用户名。此外,对于用户名,您必须单独报告每个验证失败(用户名太长,用户名需要大写,等等)。只是“用户名无效”是一个糟糕的用户体验。什么使它无效?跳过它,使用电子邮件。这个正则表达式是错误的,它有几个问题。首先,通过这种方式,在开始时也允许使用数字。那么i如果你指定a-zA-Z是没有用的。如果你只使用a-Z是有意义的。而且这样你也只接受两个数字。什么?你是对的,
    [a-zA-Z]
    是不必要的,不是错的,而是不必要的。但其余的都是对的。。。
    /^[a-z][a-z]+\d*$|^[a-z]\d{2,}$/i