Regex Android验证用户名和密码

问题描述 投票:0回答:1

我需要以下的regex模式来验证一个用户名和密码。

用户名 :

  • 介于3到25个字符之间
  • 至少一个字符[a-zA-Z]
  • 任何字符,如:.0-9、a-z、A-Z、_。0-9, a-z, A-Z, _。

我已经结束了这个模式,但我不知道如何设置{3,25}(我的测试还没有验证它)。

^[a-zA-Z0-9_]*[a-zA-Z][a-zA-Z0-9_]*{3,25}$

密码 :

     * ^                 # start-of-string
     * (?=.*[0-9])       # a digit must occur at least once
     * (?=.*[a-z])       # a lower case letter must occur at least once
     * (?=.*[A-Z])       # an upper case letter must occur at least once
     * (?=.*[a-zA-Z])    # any letter upper or lower case
     * (?=.*[@#$%^&+=])  # a special character must occur at least once
     * (?=\\S+$)          # no whitespace allowed in the entire string
     * .{6,}             # anything, at least six places though
     * $                 # end-of-string
     */
    private Pattern VALID_PASSWORD = Pattern.compile("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z])(?=.*[@#$%^&+!?=])(?=\\S+$).{6,}$");

我只需要改变这个模式以允许特殊字符,但我不想让它们成为强制性的。

谅谅

java android regex passwords username
1个回答
2
投票

的用户名。

看了一下你目前的模式,似乎你可以用下面的模式来验证你的用户名。

^(?=.*[a-zA-Z])\w{3,25}$

请看 在线演示.

  • ^ - 起始字符串 ancor。
  • (?=.*[a-zA-Z]) - 一个正数的前导符,对于除换行以外的任何字符后面有0个或更多的字母在 [a-zA-Z] 字符类。
  • \w{3,25} - 类中的任何字符 [a-zA-Z0-9_]三次,最多25次。
  • $ - 结束字符串 ancor。

enter image description here


密码。

当你至少检查了一个小写字母和一个大写字母时 那将会破坏你检查任何大写或小写字母的目的 在你当前的模式下 另外。. 任何字符都可以与特殊字符相匹配,比如你的字符类中的字符。[@#$%^&+!?=]. 当你不希望这些是强制性的时候,不要用它们来做正面的展望。相反,也许可以尝试以下方式。

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\S{6,}$

现在唯一必须使用的字符是至少 一个 个位数 一个 小写字母和至少 一个 大写字母。请看 在线演示.

  • ^ - 起始字符串 ancor.
  • (?=.*\d) - 除换行符0以外的任何字符的正前导,以及后面的数字。
  • (?=.*[a-z]) - 除换行符0以外的任何字符,以及小写字母后的任何字符的正前导。
  • (?=.*[A-Z]) - 除换行符零或更多次外,任何字符后有大写字母的正前导。
  • \S{6,} - 任何非空格字符。
  • $ - 字符串祖先结束。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.