我需要以下的regex模式来验证一个用户名和密码。
用户名 :
我已经结束了这个模式,但我不知道如何设置{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}$
请看 在线演示.
^
- 起始字符串 ancor。(?=.*[a-zA-Z])
- 一个正数的前导符,对于除换行以外的任何字符后面有0个或更多的字母在 [a-zA-Z]
字符类。\w{3,25}
- 类中的任何字符 [a-zA-Z0-9_]
三次,最多25次。$
- 结束字符串 ancor。密码。
当你至少检查了一个小写字母和一个大写字母时 那将会破坏你检查任何大写或小写字母的目的 在你当前的模式下 另外。.
任何字符都可以与特殊字符相匹配,比如你的字符类中的字符。[@#$%^&+!?=]
. 当你不希望这些是强制性的时候,不要用它们来做正面的展望。相反,也许可以尝试以下方式。
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\S{6,}$
现在唯一必须使用的字符是至少 一个 个位数 一个 小写字母和至少 一个 大写字母。请看 在线演示.
^
- 起始字符串 ancor.(?=.*\d)
- 除换行符0以外的任何字符的正前导,以及后面的数字。(?=.*[a-z])
- 除换行符0以外的任何字符,以及小写字母后的任何字符的正前导。(?=.*[A-Z])
- 除换行符零或更多次外,任何字符后有大写字母的正前导。\S{6,}
- 任何非空格字符。$
- 字符串祖先结束。