[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 블로거

초이

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