[JAVA / JAVASCRIPT] 정규식을 사용해서 비밀번호 영문, 숫자, 특수문자, 자릿수 유효성 검사하기
비밀번호 유효성 검사는 사용자 계정의 보안을 강화하는 중요한 과정 중 하나입니다. Java와 JavaScript를 사용하여 지정된 규칙에 따른 비밀번호 유효성 검사 로직을 작성해보겠습니다.
Java로 비밀번호 유효성 검사하기
Java에서는 Pattern과 Matcher 클래스를 사용하여 정규 표현식을 통한 문자열 검사를 수행할 수 있습니다. 다음 예제는 위에서 언급한 규칙을 충족하는지 확인하는 방법을 보여줍니다.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PasswordValidator {
private static final String PASSWORD_PATTERN =
"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]).{8,}$";
private static final Pattern pattern = Pattern.compile(PASSWORD_PATTERN);
public static boolean validate(final String password) {
Matcher matcher = pattern.matcher(password);
return matcher.matches();
}
public static void main(String[] args) {
// Test password
String password = "ExamplePassword123!";
boolean isValid = validate(password);
System.out.println("Is password valid? " + isValid);
}
}
이 코드에서 PASSWORD_PATTERN은 다음과 같은 규칙을 정의합니다:
- (?=.*[0-9]): 최소 한 개의 숫자 포함
- (?=.*[a-z]): 최소 한 개의 소문자 영문자 포함
- (?=.*[A-Z]): 최소 한 개의 대문자 영문자 포함
- (?=.*[!@#$%^&*()_+\-=\[\\]{};':"\|,.<>\\/?]): 최소 한 개의 특수 문자 포함
- .{8,}: 최소 8자 이상
JavaScript로 비밀번호 유효성 검사하기
웹 애플리케이션에서 사용자 입력 폼의 클라이언트 측 유효성 검사를 수행할 때 JavaScript를 사용할 수 있습니다. 동일한 정규 표현식을 사용하여 검사를 수행할 수 있습니다.
function validatePassword(password) {
var passwordPattern = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{8,}$/;
return passwordPattern.test(password);
}
// Test password
var password = "ExamplePassword123!";
var isValid = validatePassword(password);
console.log("Is password valid? " + isValid);
이 JavaScript 함수는 주어진 비밀번호가 규칙을 충족하는지 검사하고, 결과로 true 또는 false를 반환합니다. 이 코드 역시 Java 예제와 동일한 정규 표현식을 사용합니다.
두 언어 모두에서 사용된 정규 표현식은 강력한 비밀번호를 생성하는 데 도움이 될 것입니다. 클라이언트 측에서 유효성 검사를 수행하는 것은 사용자 경험을 향상시키지만, 보안을 위해서는 서버 측에서도 반드시 유효성 검사를 수행해야 합니다.