第一个字符为字母的用户名的正则表达式是什么,在Java中有特定的范围?

第一个字符为字母的用户名的正则表达式是什么,在Java中有特定的范围?,java,regex,validation,Java,Regex,Validation,我想用java创建一个类,使用正则表达式进行用户名验证。如果满足以下所有约束条件,则认为用户名有效: 用户名由8到30个字符组成,包括8到30个字符。如果用户名包含少于或大于个字符,则该用户名无效 用户名只能包含字母数字字符和下划线(\)。字母数字字符描述由小写字符[a-z]、大写字符[a-z]和数字[0-9]组成的字符集 用户名的第一个字符必须是字母字符,即小写字符[a-z]或大写字符[a-z] 我试过这样的表达: ^[a-zA-Z0-9_]{8-30}$ 这对所有用户名来说都是无效的。我希

我想用java创建一个类,使用正则表达式进行用户名验证。如果满足以下所有约束条件,则认为用户名有效:

  • 用户名由8到30个字符组成,包括8到30个字符。如果用户名包含少于或大于个字符,则该用户名无效
  • 用户名只能包含字母数字字符和下划线(\)。字母数字字符描述由小写字符[a-z]、大写字符[a-z]和数字[0-9]组成的字符集
  • 用户名的第一个字符必须是字母字符,即小写字符[a-z]或大写字符[a-z]
  • 我试过这样的表达:

    ^[a-zA-Z0-9_]{8-30}$
    

    这对所有用户名来说都是无效的。我希望Samantha_21的输出是有效的。

    您的正则表达式有输入错误和遗漏。拼写错误是范围限制应该用逗号分隔。省略的是您没有单独检查第一个字符:

    ^[a-zA-Z][a-zA-Z0-9_]{7,29}$
    

    范围减少1以容纳固定的第一个字符。

    要指定重复范围,请在
    {}
    中使用逗号
    ,而不是破折号
    -
    ,感谢您的帮助@mad Physicator您的正则表达式工作得非常好。这很有帮助