【问题标题】:Regex single character user name validation正则表达式单字符用户名验证
【发布时间】:2020-04-22 19:39:27
【问题描述】:

下面提到的正则表达式用于验证 Java 中的用户输入。

username.matches("^\\p{L}+[\\p{L}\\p{Z}.']+")

正则表达式对多个字符输入有效,但对单个字符输入无效。

由于“+”表示一个和多个字符,我很困惑如何支持一个字符输入作为有效输入。

【问题讨论】:

    标签: java regex


    【解决方案1】:

    这是因为您的正则表达式中的两个部分都需要至少一个字符(请参阅几乎在正则表达式末尾的+)。如果您希望该部分是可选的,则应改为 *

    【讨论】:

      【解决方案2】:

      您拥有的正则表达式将匹配 2 个或更多符号。原因是,这是一个(或多个)符号:

      \\p{L}+
      

      这是符号 2(或更多):

      [\\p{L}\\p{Z}.']+
      

      您很可能希望最后一部分为“0 或更多”,如下所示:

      "^\\p{L}+[\\p{L}\\p{Z}.']*"
      

      【讨论】:

      • 我的错!我错过了第二个“+”号
      【解决方案3】:

      您的正则表达式至少需要 2 个字符。

      "^\p{L}+" - 最少 1
      "[\p{L}\p{Z}.']+" - 最少 1

      “+”确实表示一个或多个字符。

      【讨论】:

        猜你喜欢
        • 2012-08-14
        • 1970-01-01
        • 2013-08-04
        • 2017-10-04
        • 2017-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多