2011-11-25 41 views
9

/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8}/Giải thích mật khẩu phần regex bởi thành phần (javascript)

RegEx Đây là vụ phải xác nhận mật khẩu, mà nên chứa ít nhất một chữ số, cả chữ thường và ký tự chữ hoa. Bất cứ ai có thể giải thích RegEx này bởi các thành phần nhỏ hơn?

+4

Đặt câu hỏi về biểu thức chính quy, không phải về _your_ biểu thức chính quy. –

+2

@LightnessRacesinOrbit là công bằng, nó chỉ là một ví dụ. Giống như hầu hết các ví dụ khác, kiến ​​thức được giả định là có thể áp dụng cho các tình huống khác. –

Trả lời

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

regex này thường được sử dụng để xác nhận mật khẩu, ví dụ:

mật khẩu phải chứa 1 UpperCase, 1 LowerCase1 numericno 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. 

Hy vọng điều này sẽ hữu ích.

8

(?=.*\d) đảm bảo chuỗi của bạn có chữ số trong đó.

(?=.*[a-z]) đảm bảo chuỗi của bạn có chữ cái ASCII chữ thường trong đó.

(?=.*[A-Z]) đảm bảo chuỗi của bạn có chữ cái ASCII viết hoa trong đó.

.{6,8} khớp với chuỗi ít nhất 6 và tối đa 8 ký tự.

Vì thiếu neo, regex của bạn sẽ khớp với bất kỳ chuỗi nào có chuỗi con của nó là chuỗi đáp ứng tất cả 4 điều kiện trên.

+1

(và tất nhiên, một lần nữa, nó chỉ có chữ cái và chữ số ASCII. Ngoài ra, không có neo, chuỗi dài hơn 8 ký tự cũng sẽ khớp một phần) ... –

+0

@Tim: Đúng ... – codaddict

+1

+1 và xóa của tôi, bởi vì bạn gõ nhanh hơn. – stema

6

(?=..) có nghĩa là: Để chuỗi sau vị trí hiện tại chứa ...

(?=.*\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 

Mẫu của bạn thiếu dấu cho đầu và cuối chuỗi. Thêm ^$:

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

Cụm từ thông dụng là mơ hồ. Bạn không nên sử dụng kết hợp các ký tự ". *". Khoảng thời gian này có nghĩa là bất kỳ ký tự nào và dấu hoa thị có nhiều lần xuất hiện từ 0 trở lên, có thể là toàn bộ chuỗi của bạn.

3

Nhìn vào các phần khác nhau,

(?=.*\d) Mật khẩu phải có ít nhất 6 ký tự và tối đa là 8 chữ dài ..

^(?=.*\d) chứa một số,

(?=.*[a-z]) một bảng chữ cái nhỏ và

(?=.*[A-Z]) một chữ cái viết hoa ..

Bạn có thể sử dụng như thế này

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

cho ít nhất một lá thư nhỏ, một chữ cái viết hoa, và một số với bất kỳ hạn chế chiều dài (thấp hơn, phía trên)

3
?= 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 

mà không đầu^hoặc kết thúc $ này sẽ khớp với bất kỳ chuỗi nào từ 6-8 ký tự khớp với các quy tắc trên.

nếu bạn thay đổi * thành + thì nó sẽ khớp với 1 hoặc nhiều ký tự

Các vấn đề liên quan