# Password Strength Expression

• 2010年2月9日 下午 07:43

It's been a while since I've had to use regular expressions.

Can someone explain this to me in layman's terms?

^(?=.{8,30})(?=.*[^A-Za-z])(?=.*[A-Z])(?=.*[a-z]).*

### 所有回覆

• 2010年2月9日 下午 08:14

These are all assertions...

^ = starting from the beginning of the string...
(?=.{8,30}) = there is a string that is at least 8 characters long... (the upper bound of 30 cannot work this way)
(?=.*[^A-Za-z]) = somewhere in the string, there is at least one non-alphabetic character...
(?=.*[A-Z]) = somewhere in the string, there is at least one uppercase character...
(?=.*[a-z]) = somewhere in the string, there is at least one lowercase character....

.* match anyting, provided that all the above conditions are met.

HTH
--mc
• 已標示為解答 2010年2月9日 下午 08:16
•
• 2010年2月9日 下午 08:17

Thanks.
• 2010年2月9日 下午 09:26
版主

(?=.{8,30}) = there is a string that is at least 8 characters long... (the upper bound of 30 cannot work this way)

Mario has a point...the above fails. To enforce the thirty character limit change the pattern to this:

^(?!.{31})(?=.{8})(?=.*[^A-Za-z])(?=.*[A-Z])(?=.*[a-z]).*\$

(?!.{31})  - Match invalidator, if it finds 31 characters it invalidates the match. Nothing returned
\$ - END of line

To add to Mario's, correct, statement

.* Match anything, zero or more times.

William Wegerson (www.OmegaCoder.Com )
• 已提議為解答 2011年2月22日 下午 07:08
•
• 2011年2月22日 下午 07:10

This pattern surely limits 30 chars and also accepts one or more numeral, small case and upper case alphabets.
Regards, Rule the Codes and Code New Rules
• 2011年3月4日 上午 04:29

great stub !!
Vedigoundan Gurunathan
• 2011年4月13日 下午 01:39

Very good !
• 2011年4月25日 上午 07:52

Hi LarryEis,

Use the below expression,

^(?!.{31})(?=.{8})(?=.*[^A-Za-z])(?=.*[A-Z])(?=.*[a-z]).*\$

^  = starting from the beginning of the string
(?=.{8,31}) = there is a string that is at least 8 characters long... (the upper bound of 31)
(?=.*[^A-Za-z]) = somewhere in the string, there is at least one non-alphabetic character
(?=.*[A-Z]) = somewhere in the string, there is at least one uppercase character
(?=.*[a-z]) = somewhere in the string, there is at least one lowercase character

Thanks

Roozan Bharucha

MCT, MCPD Windows Frmwk 4.0

• 已提議為解答 2011年4月25日 上午 09:34
•
• 2011年4月29日 上午 10:13

This regex can also be helpful:

{8,15}\$)(?=.*\d)((?=.*\W+)|(?=.*[A-Z]))(?![.\n]).*\$

This is according to the standards which asks for minimum 8 to maximum 15 characters

One mandatory UpperCase Alphabet,

One mandatory LowerCase Alphabet,

One mandatory Number.

• 2011年5月23日 上午 07:21

Yes , I agree with this ?= is the condition if the case is this then whats the result

\ is the escape case

[A-Z] any character between A -Z

* any case i.e small or capital letters

8-15 strength of the letter

• 2011年6月18日 下午 05:34

Assert a string is 8 or more characters:
(?=.{8,})

Assert a string contains at least 1 lowercase letter (zero or more characters followed by a lowercase character):
(?=.*[a-z])

Assert a string contains at least 1 uppercase letter (zero or more characters followed by an uppercase character):
(?=.*[A-Z])

Assert a string contains at least 1 digit:
(?=.*[\d])

Assert a string contains at least 1 special character:
(?=.*[\W])

Assert a string contains at least 1 special character or a digit:
(?=.*[\d\W])

• 已提議為解答 2011年7月4日 下午 08:08
• 已取消提議為解答 2011年7月4日 下午 08:09
•
• 2012年2月7日 上午 09:00

Regular expressions are one of those things where you have to keep in practise as it could become quite complicated.. But if you don't use it for a while and suddenly jump into it again, it all comes back..
• 2012年2月13日 上午 05:36

• 2012年2月14日 下午 05:10

I need one for

Minimum of 8 (eight) characters and at least 1 non-alphanumeric characters.

Is it right?

^(?=.{8,})(?=.*[^A-Za-z])*

• 2012年5月23日 上午 10:00

Refer Following urls