2017-08-14 2 views
1

Ich habe keine andere Lösung für dieses spezielle Problem gefunden, so hoffe ich, dass Sie helfen können.C# Regex finden Sie 2 isoliert Char in Passwort

Ich muss testen, ob ein gegebenes Passwort 2 oder mehr Großbuchstaben hat und ich dazu reguläre Ausdrücke verwenden möchte. was ich jetzt habe, ist dies:

if (Regex.IsMatch(passw, @"([A-Z]){2,}")){ 
      Note += 1; 
     } 

nur für reguläre Ausdrücke:

@"([A-Z]){2,}" 

aber mit diesem Code das Programm funktioniert nur, wenn es zwei oder mehrere Großbuchstaben sind nebeneinander.

dies funktioniert: AAAA

dies nicht: AAAA

aber ich brauche diese als Passwort vollständig zufällig sein kann.

ich suchte im Internet nach regulären Ausdrücken, aber {2,} scheint der beste Quantifizierer für den Job zu sein, oder bin ich da ganz falsch?

Vielen Dank für alle tipps :)

+0

Sie müssen wissen, Großbuchstaben in Passwort oder was? –

Antwort

0

Diese den Job

@"[A-Z].*[A-Z]" 

Hier suchen Sie nach einem Großbuchstaben ([A-Z]), dann eine beliebige Zeichenfolge (.*), und dann noch einen Großbuchstaben tun sollte ([A-Z]). Wenn Sie die Anzahl der benötigten Großbuchstaben können, erhöhen wollen einfach Sie verwenden:

@"([A-Z].*){2,}" 

Jetzt suchen Sie nach einem Großbuchstaben, dann eine beliebige Zeichenfolge. Und du suchst danach zweimal oder öfter.

+0

Vielen Dank :) das war genau die Lösung, die ich brauchte. – Nazzaroth

+0

Also akzeptiere es bitte! – EarthDragon

0

können Sie diesen Code verwenden, um Groß- und Ziffer vergessen zählen:

return password.Length >= z 
    && new Regex("[A-Z]").Matches(password).Count >= x 
    && new Regex("[0-9]").Matches(password).Count >= y 
    ; 

Ich hoffe, Ihnen zu helfen.

0

Wenn Sie so etwas versuchen, können Sie vielleicht die Lösung erreichen. Passen Sie diese Methode an Ihre eigenen

public static bool checkingUpperCase(string s) 
{ 
    for (int i = 0; i < s.Length; i++) 
    { 
    if (char.IsUpper(s[i])) 
     return false; 
    } 
return true; 
}