[JAVA / JAVASCRIPT] 정규식을 사용해서 비밀번호 영문, 숫자, 특수문자, 자릿수 유효성 검사하기

가이드문구

비밀번호 유효성 검사는 사용자 계정의 보안을 강화하는 중요한 과정 중 하나입니다. Java와 JavaScript를 사용하여 지정된 규칙에 따른 비밀번호 유효성 검사 로직을 작성해보겠습니다.


Java로 비밀번호 유효성 검사하기

Java에서는 Pattern과 Matcher 클래스를 사용하여 정규 표현식을 통한 문자열 검사를 수행할 수 있습니다. 다음 예제는 위에서 언급한 규칙을 충족하는지 확인하는 방법을 보여줍니다.

  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. public class PasswordValidator {
  4. private static final String PASSWORD_PATTERN =
  5. "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]).{8,}$";
  6. private static final Pattern pattern = Pattern.compile(PASSWORD_PATTERN);
  7. public static boolean validate(final String password) {
  8. Matcher matcher = pattern.matcher(password);
  9. return matcher.matches();
  10. }
  11. public static void main(String[] args) {
  12. // Test password
  13. String password = "ExamplePassword123!";
  14. boolean isValid = validate(password);
  15. System.out.println("Is password valid? " + isValid);
  16. }
  17. }


이 코드에서 PASSWORD_PATTERN은 다음과 같은 규칙을 정의합니다:


- (?=.*[0-9]): 최소 한 개의 숫자 포함

- (?=.*[a-z]): 최소 한 개의 소문자 영문자 포함

- (?=.*[A-Z]): 최소 한 개의 대문자 영문자 포함

- (?=.*[!@#$%^&*()_+\-=\[\\]{};':"\|,.<>\\/?]): 최소 한 개의 특수 문자 포함

- .{8,}: 최소 8자 이상



JavaScript로 비밀번호 유효성 검사하기

웹 애플리케이션에서 사용자 입력 폼의 클라이언트 측 유효성 검사를 수행할 때 JavaScript를 사용할 수 있습니다. 동일한 정규 표현식을 사용하여 검사를 수행할 수 있습니다.

  1. function validatePassword(password) {
  2. var passwordPattern = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{8,}$/;
  3. return passwordPattern.test(password);
  4. }
  5. // Test password
  6. var password = "ExamplePassword123!";
  7. var isValid = validatePassword(password);
  8. console.log("Is password valid? " + isValid);


이 JavaScript 함수는 주어진 비밀번호가 규칙을 충족하는지 검사하고, 결과로 true 또는 false를 반환합니다. 이 코드 역시 Java 예제와 동일한 정규 표현식을 사용합니다.


두 언어 모두에서 사용된 정규 표현식은 강력한 비밀번호를 생성하는 데 도움이 될 것입니다. 클라이언트 측에서 유효성 검사를 수행하는 것은 사용자 경험을 향상시키지만, 보안을 위해서는 서버 측에서도 반드시 유효성 검사를 수행해야 합니다.

작성자 소개
초이 프로필
WrapUp 블로거

초이

반려견을 좋아하고, 차를 좋아하고, 여행을 좋아하고, 맛집을 찾아 즐기는 웹 개발자 입니다^^