Sandy209
asked on
Regex for alphanumeric only
* must contain both upper and lowercase characters
* must contain at least one number
* must only contain letters and numbers (no other special characters)
* min length 7, max length 12
The following is close:
^(?=.*\d)(?=.*[a-z])(?=.*[
but there is a danger i could miss characters in the exclude list. Is there anyway to specify just alphanumeric only?
Thanks
^(?=.*\d)(?=.*[a-z])(?=.*[ A-Z])([0-9 a-zA-Z]){7 ,12}$
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Excellent! Thanks
I would not use regex in this case. Finite state machine would be much simpler.
Something like:
bool upperCaseFound = false;
bool lowerCaseFound = false;
bool digitFound = false;
foreach (char c in s)
{
switch (char.GetUnicodeCategory(c ))
{
case UnicodeCategory.UppercaseL etter:
upperCaseFound = true;
break;
case UnicodeCategory.LowercaseL etter:
lowerCaseFound = true;
break;
case UnicodeCategory.DecimalDig itNumber:
digitFound = true;
break;
}
}
bool validPassword =
lowerCaseFound &&
upperCaseFound &&
digitFound &&
s.Length >= 7 &&
s.Length <= 12;
Something like:
bool upperCaseFound = false;
bool lowerCaseFound = false;
bool digitFound = false;
foreach (char c in s)
{
switch (char.GetUnicodeCategory(c
{
case UnicodeCategory.UppercaseL
upperCaseFound = true;
break;
case UnicodeCategory.LowercaseL
lowerCaseFound = true;
break;
case UnicodeCategory.DecimalDig
digitFound = true;
break;
}
}
bool validPassword =
lowerCaseFound &&
upperCaseFound &&
digitFound &&
s.Length >= 7 &&
s.Length <= 12;