Hej! Det borde vara enklast att bara köra Hej Per! trippelpost... ...kan man inte ta bort inlägg? Det borde vara enkelt att lösa om du gör tre olika mönster som vardera kräver tre av kriterierna: Hej Göran!Regex: matcha minst 3 av 4 olika patterns i en sträng
Jag är riktigt dålig på regex, det ska sägas med en gång. Jag har dessutom hittills bara gjort mycket enkla saker med .NET:s RegularExpressions-klass. Så det är fullt möjlighet att jag angriper det här problemet på helt fel sätt.
Jag vill kontrollera att en sträng (ett lösenord) svarar mot minst 3 av 4 krav, minst en versal, minst en gemen, minst en siffra, minst ett specialtecken.
Min tanke var då att skapa en serie grupper med ovanst. patterns och sedan testa att Matches.Count >= 3. Där jag går bet är att respektive *typ* av matchning bara ska räknas en gång.
"ab" ska t.ex. inte lägga till två matchningar till MatchesCollection, utan en.
Några tips?
mvh
/JonasSv: Regex: matcha minst 3 av 4 olika patterns i en sträng
<code>
bool okej = ((int)harVersal(pass) + (int)harGemen(pass) + (int)harSiffra(pass) + (int)harSpecial(pass) >= 3);
</code>
där harVersal(...) bara kollar om det finns en versal i bifogad sträng.Sv:Regex: matcha minst 3 av 4 olika patterns i en sträng
Jo, det funkar förstås. Jag hade bara en idé om att de skulle gå att med ett enda regex-uttryck.
Typ
<code>
public bool IsStrongPassword(Password)
{
string myRegEx = "^(?=.*[a-z])|(?=.*[A-Z])|(?=.*\d)|(?=.*[lista på diverse specialtecken])$";
System.Text.RegularExpressions.Regex regex = new Regex(myRegEx);
System.Text.RegularExpressions.MatchesCollection m = regex.Matches(Password);
if(m.Count >=3)
return true;
else
return false;
}
</code>
Men just denna kod funkar inte eftersom den adderar en match för *varje* förekomst av gemen, versal osv.
Jag försöker inte bara få jobbet gjort, utan också lära mig regex, därav frågan.
mvh
/JonasSv:Regex: matcha minst 3 av 4 olika patterns i en sträng
Sv: Regex: matcha minst 3 av 4 olika patterns i en sträng
^((mönster 1)|(mönster 2)|(mönster 3))$
Då är det bara att kolla ifall du får en träff på mönstret eller inte.Sv:Regex: matcha minst 3 av 4 olika patterns i en sträng
Får först be alla så mycket om ursäkt för att jag aldrig stängde den här tråden, det dök upp akuta problem i ett system jag ansvarar för så jag fick göra en s.k. brandkårsutryckning... ...och när elden väl var släckt var jag tvungen att göra annat och allt detta glömdes bort. Nu försöker jag plocka upp projektet igen.
Nå, din lösning fungerar ju bra i mitt fall, så jag sätter tråden som löst. Men jag kan inte låta bli att undra om det inte skulle gå att göra s.a.s. effektivare. Om det t.ex. istället rört sig om ett krav på minst sju villkor av 10 t.ex., så blir det väl många permutationer.
Så om nån snubblar på denna tråd nån gång och ser en bättre lösning, öppna den gärna igen!
mvh
/Jonas