자바 비밀번호 정규식 응용

조회수 1074회

안드로이드 스튜디오에서 비밀번호 정규식 작성하고 있습니다. 체크박스로 숫자, 영문자, 특수문자 여부 받고 조건 부합 여부에 따라 글씨 색이 달라지게 설정했습니다. 그런데 체크박스를 여러개 체크하면 무조건 부합하지 않는다고 뜨는데 어떻게 수정해야 할까요? pwC1과 pwC2를 동시에 체크했을 때 조건에 부합할 경우 원하는 대로 나오지 않습니다.

    String pwChar = edit_Age.getText().toString();

    String pwC1 = "^[0-9]*$";
    String pwC2 = "^[a-z]*$";

    PWc=edit_Age.getText().toString();

    boolean is_pw1 = Pattern.matches(pwC1, pwChar);
    boolean is_pw2 = Pattern.matches(pwC2, pwChar);


    switch (v.getId()) {
        case R.id.checkBox:
        if (is_pw1){
            edit_Age.setTextColor(Color.parseColor("#00ff33"));
            Toast.makeText(MainActivity.this, "추천하는 비밀번호",Toast.LENGTH_SHORT).show();
        }
        else{
            Toast.makeText(MainActivity.this, "추천하지 않는 비밀번호", Toast.LENGTH_SHORT).show();
            edit_Age.setTextColor(Color.parseColor("#ff0000"));

        }
        break;

        case R.id.checkBox2:
            if (is_pw2){
                edit_Age.setTextColor(Color.parseColor("#00ff33"));
                Toast.makeText(MainActivity.this, "추천하는 비밀번호",Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(MainActivity.this, "추천하지 않는 비밀번호", Toast.LENGTH_SHORT).show();
                edit_Age.setTextColor(Color.parseColor("#ff0000"));

            }
            break;

1 답변

  • 안녕하세요. :-)

    pwC1는 숫자, pwC2는 영문자를 조건으로 사용하고 싶으신거군요.

    자바가 주 사용 언어는 아니지만 저라면 이렇게 할 것같네요.

    String pwC1 = isChecked1==true? "0-9" :""; // 1번 체크 시
    String pwC2 = isChecked2==true? "a-z":""; // 2번 체크 시
    String pwPattern = "^[" +pwC1+pwC2+"]*$";
    

    입력받은 pwChar가 pwPattern로 매치되는 지 확인해주시면 됩니다.

    여기서 주의할 점은 pwC2의 조건은 대문자는 pwC2조건에 부합하지 않습니다. 즉, 소문자만 조건에 부합하게 되지요. 대문자까지 포함하고 싶으시다면 정확하게는 A-z로 고쳐주시면 됩니다.

    p.s 정규표현식을 사용할 때마다 느끼는 거지만... 생각보다 섬세하고 까다롭고 또 예상치 못한 곳에서 스트레스(?)를 받는 작업같습니다. 저는 https://regexr.com 같은 곳에서 테스트&검증한 후 코드에 밖습니다. 테스트에 걸리는 시간과 노력을 많이 줄일 수 있으니 한번 이용해보시는 걸 추천드립니다.

    감사합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 답변감사합니다! minya 2018.11.29 14:34
    • 한가지 더 궁금한 점이 있는데, 조건을 추가 할 경우 pwPattern에 +로 연결하면 되는건가요? minya 2018.11.29 14:35
    • 네^^. [] 안에 조건으로 들어갈 문자를 포함해서 '옳바른 정규표현식'이라면 매칭이 가능합니다. java코드로 직접 가능한 지 매칭테스트 하시지 마시고 https://regexr.com 같은 곳을 이용하세요. 알 수 없는 사용자 2018.11.29 21:05

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)