/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8}/
此RegEx应该验证密码,该密码应包含至少一个数字,包括小写和大写字符。任何人都可以通过较小的组件来解释这个RegEx吗?
答案 0 :(得分:11)
/(?=.\d)(?=.[a-z])(?=.*[A-Z]).{6,8}/
此正则表达式通常用于验证密码,即
密码应包含1 UpperCase
,1 LowerCase
和1 numeric
以及no special characters
。
(?=.*\d) //at least 1 numeric charater.
(?=.*[a-z]) //atleast 1 lowercase.
(?=.*[A-Z]) //atleast 1 uppercase.
.{6,8} //string is of 6 to 8 length.
希望这有帮助。
答案 1 :(得分:8)
(?=.*\d)
可确保您的字符串中包含数字。
(?=.*[a-z])
确保您的字符串中包含小写的ASCII字母。
(?=.*[A-Z])
确保您的字符串中包含大写的ASCII字母。
.{6,8}
匹配至少6个字符和最多8个字符的字符串。
由于缺少锚点,你的正则表达式将匹配任何字符串,该字符串的子字符串是满足上述所有4个条件的字符串。
答案 2 :(得分:6)
(?=..)
表示:让当前位置后面的字符串包含..
。
(?=.*\d) # Somewhere, at least one digit should appear
(?=.*[a-z]) # and at least a lowercase letter
(?=.*[A-Z]) # and at least an uppercase letter
.{6,8} # must consist of 6-8 characters
您的模式缺少字符串开头和结尾的标记。添加^
和$
:
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8}$/
答案 3 :(得分:4)
?= is look ahead for the following feature within brackets ()
then (?=.*\d) 0 or more of any character that is a decimal 0-9
then (?=.*[a-z]) after that look ahead for 0 or more a-z characters
then (?=.*[A-Z]) after that look ahead for 0 or more A-Z uppercase characters
.{6,8}/ and then must be 6-8 character long
没有开头^或结尾$ this将匹配符合上述规则的任何6-8个字符的字符串。
如果您将*更改为+,那么它将匹配1个或更多字符
答案 4 :(得分:3)
看看不同的部分,
(?=.*\d)
密码必须至少6个字符,最多8个字母..
^(?=.*\d)
包含一个数字
(?=.*[a-z])
一个小字母和
(?=.*[A-Z])
一个大写字母..
你可以这样使用
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{lower_limit, upper_limit}$
至少一个小写字母,一个大写字母和一个长度限制的数字(下限,上限)
答案 5 :(得分:2)
正则表达式含糊不清。你不应该使用字符组合"。*"。句点意味着任何字符和星号多出现0次或多次,这可能是整个字符串。