04. juni 2007 - 19:26Der er
11 kommentarer og 1 løsning
RegEx password
Jeg har følgende problem, hvordan tjekker jeg om et password indeholder følgende: min, max længde, kun tal og bogstaver, skal mindst indeholde et tal samt et stort bogstav ?
/** Creates a new instance of NewMain6 */ public NewMain6() { }
/** * @param args the command line arguments */ public static void main(String[] args) { System.out.println(checkPassword("asd2Dfg")); System.out.println(checkPassword("sd2Dfg")); System.out.println(checkPassword("asd2dfg")); System.out.println(checkPassword("")); }
private static boolean checkPassword(String pWord){ int min = 0, max = 6; boolean isNumber = false, isCapital = false;
char[] c = pWord.toCharArray(); if(c.length >= min && c.length <= max){ for (int i = 0; i < c.length; i++) { if(Character.isDigit(c[i])) isNumber = true;
Ja det er umiddelbart den eneste løsning, men jeg leder også efter hvordan man kan definere ud fra et regex. Altså hvordan kan man definere at strengen skal mindt indeholde et tal feks. ?
Java regular expressions bliver precompileret, så hvorfor ikke bare bruge 2 eller flere simple og overskuelige regular expressions
"^[a-zA-Z0-9]{6,10}$" mindst 6 og højest 10 bogstaver og cifre "^\D*\d\w*$" mindst et ciffer "^[^A-Z]*[A-Z]\w*$" mindst et stort bogstav
Hvis alle 3 matcher er det et lovligt password format efter de givne regler. Det har så også den fordel at det er nemt at tilføje/fjerne ytderligere regler. fx gætter jeg på du har glemt at nævne at der også SKAL være et lille bogstav i ordet "^[^a-z]*[a-z]\w*$" mindst et lille bogstav
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.