시소당
안녕하세요..
자바 로그인 하는 부분인데 pass에서 영문과 숫자 조합으로만 할수 있게
조건을 걸으려고 합니다. 정규화를 써서...
추가적으로 다른방법으로 코딩한것도 포함해주시면 ㄳ~^^
class LoginTest{
public static void main(String[] args){
System.out.println("Id를 입력하세요");
String id=MyUtil.getString();
System.out.println("Pass를 입력하세요");
String pass=MyUtil.getString();
int len = id.length();
int leng = pass.length();
if(len>=6 && len<=8)
{
if(leng>=6 && leng<=8)
{
if(id.matches("\\w*"))
{
System.out.println("입력하신 id는"+id);
if (pass.matches("\\w.*"))
{
if(pass.contains("\\d+") && ((pass.contains("\\[a-z]+") || pass.contains("\\[A-Z]+"))))
{
pass=pass.replaceAll(".","*"); //.은 개행문자를 제외한 아무문자 하나를 지칭, .를 표기하기 위해서는 \\.으로 표기
System.out.println("입력하신 pass는"+pass);
}
else
{
System.out.println("pass조건2는 숫자와 영문자를 조합하세요");
}
}
else
{
System.out.println("pass는 숫자와 영문자를 조합하세요");
}
}
else
{
System.out.println("숫자또는 영문자로 하세요");
}
}
else
{
System.out.println("Pass를 6자이상 8자이하로 입력해주세요");
}
}
else
{
System.out.println(" ID를 6자이상 8자이하로 입력해주세요");
}
}
}
//id는 영문이나 숫자로 5~8제한 pass는 영문숫자조합 5~8제한
//pass 는 출력에서 *****로 바꾸어 줄것
-----------------------------------------------------------------------------------------------------
5.0버젼이면 Scanner와 Pattern을 이용하여 아래와 같이 하시면 됩니다.
import java.util.Scanner;
import java.util.regex.Pattern;
class LoginTest{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
Pattern plen=Pattern.compile(".{5,8}"); //길이
Pattern patt=Pattern.compile("[\\w&&[^_]]+"); //혼용
Pattern pnum=Pattern.compile("[\\d]+"); //0-9
Pattern pstr=Pattern.compile("[a-zA-Z]+"); //a-zA-Z
System.out.println("Id를 입력하세요");
String id=scan.next();
System.out.println("Pass를 입력하세요");
String pass=scan.next();
if (plen.matcher(id).matches()) {
if (plen.matcher(pass).matches()) {
if (pnum.matcher(id).matches() || pstr.matcher(id).matches()) {
if (patt.matcher(pass).matches() && !pnum.matcher(pass).matches() && !pstr.matcher(pass).matches()) {
pass=pass.replaceAll(".","*");
System.out.println("입력하신 pass는 "+pass);
} else System.out.println("pass는 숫자와 영문자를 조합하세요");
} else System.out.println("ID는 숫자 또는 영문자로 하세요");
} else System.out.println("Pass를 6자이상 8자이하로 입력해주세요");
} else System.out.println(" ID를 6자이상 8자이하로 입력해주세요");
}
}
출처 : http://kin.naver.com/detail/detail.php?d1id=1
&dir_id=10106&eid=DT3Hbz8vYvif5KS8e4Y33m/k+5m7nteK&qb=wNq52SBtYXRjaGVy