按组件解释密码regex组件(javascript)

时间:2011-11-25 11:08:10

标签: javascript regex

/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8}/

此RegEx应该验证密码,该密码应包含至少一个数字,包括小写和大写字符。任何人都可以通过较小的组件来解释这个RegEx吗?

6 个答案:

答案 0 :(得分:11)

/(?=.\d)(?=.[a-z])(?=.*[A-Z]).{6,8}/

此正则表达式通常用于验证密码,即

密码应包含1 UpperCase1 LowerCase1 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次或多次,这可能是整个字符串。