java - 如何使用 Java 正则表达式在 Android 上验证用户名和密码?

标签 java android regex

我需要以下正则表达式模式来验证用户名和密码:

用户名:

  • 3 到 25 个字符
  • 至少一个字符 [a-zA-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,}$");

我只需要更改此模式以允许使用特殊字符,但我不想强制使用它们。

最佳答案

用户名:

查看您当前的模式,您似乎可以使用以下模式来验证您的用户名:

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

参见 Online Demo .

  • ^ - 开始字符串 ancor。
  • (?=.*[a-zA-Z]) - 对于除换行符以外的任何字符零次或多次后跟 [a-zA 中的字母-Z] 字符类。
  • \w{3,25} - [a-zA-Z0-9_] 类中的任何字符,三次最多为 25。
  • $ - 结束字符串 ancor。

enter image description here


密码:

当您至少检查了一个小写字母和一个大写字母时,这将破坏在您当前模式的行后面检查任何大写或小写字母的目的。此外,. 是任何字符都会匹配特殊字符,例如您的字符类 [@#$%^&+!?=] 中的字符。如果您不希望这些是强制性的,请不要在积极的前瞻中使用它们。相反,也许可以尝试以下操作:

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

现在唯一的强制性字符是至少一个 数字、至少一个 小写字母和至少一个 大写字母。查看Online Demo .

  • ^ - 开始字符串 ancor。
  • (?=.*\d) - 对除换行符以外的任何字符进行零次或多次后跟数字的正向预测。
  • (?=.*[a-z]) - 对除换行符以外的任何字符进行零次或多次后跟小写字母的正向前瞻。
  • (?=.*[A-Z]) - 对除换行符以外的任何字符进行零次或多次后跟大写字母的正面前瞻。
  • \S{6,} - 任何非空白字符。
  • $ - 结束字符串 ancor。

enter image description here

关于java - 如何使用 Java 正则表达式在 Android 上验证用户名和密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62361928/

相关文章:

Java正则表达式

java - Eclipse RCP Job cancel() 方法始终返回 false

android - 如何在 Chrome 中像 Flipkart 一样在我的网站上添加到主屏幕横幅?

java - XSLT/Java : ERROR: 'Cannot find external method ' max' (must be public). '

android - 可调整的自定义用户界面

java - 如何根据键值将 2 个 ArrayList<HashMap<String, String>> 合并为 1 个?

regex - 正则表达式和汇编

regex - 基于 Bash 的正则表达式域名验证

java - Java中两个同步块(synchronized block)的区别

java - 在awt中添加图像