본문 바로가기
Dart/Study

Dart에서 패스워드 검증하기: 정규 표현식 사용법

by Maccrey Coding 2024. 8. 9.
반응형

패스워드의 복잡성을 검증하기 위한 정규 표현식은 보안 요구 사항에 따라 달라질 수 있습니다.

일반적으로, 강력한 패스워드는 다음과 같은 기준을 만족해야 합니다:

  • 최소 길이 (예: 8자 이상)
  • 대문자, 소문자, 숫자 및 특수 문자를 포함
  • 공백을 포함하지 않음

아래는 이러한 요구 사항을 만족하는 패스워드를 검증하기 위한 Dart 정규 표현식의 예입니다.

 

패스워드 검증을 위한 정규 표현식

final RegExp passwordRegExp = RegExp(
  r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$',
);

정규 표현식 설명

  • ^: 문자열의 시작을 나타냅니다.
  • (?=.*[a-z]): 최소 하나의 소문자(a-z)가 포함되어야 합니다.
  • (?=.*[A-Z]): 최소 하나의 대문자(A-Z)가 포함되어야 합니다.
  • (?=.*\d): 최소 하나의 숫자(0-9)가 포함되어야 합니다.
  • (?=.*[@$!%*?&]): 최소 하나의 특수 문자(@, $, !, %, *, ?, &)가 포함되어야 합니다.
  • [A-Za-z\d@$!%*?&]{8,}: 허용되는 문자 집합과 최소 길이(8자 이상)를 정의합니다.
  • $: 문자열의 끝을 나타냅니다.

패스워드 검증 코드 예제

void main() {
  String password1 = "Secure123!";
  String password2 = "password";
  
  final RegExp passwordRegExp = RegExp(
    r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$',
  );
  
  bool isValidPassword1 = passwordRegExp.hasMatch(password1);
  bool isValidPassword2 = passwordRegExp.hasMatch(password2);
  
  print("Is '$password1' a valid password? $isValidPassword1");  // true
  print("Is '$password2' a valid password? $isValidPassword2");  // false
}

설명

  • RegExp 클래스를 사용하여 정규 표현식을 정의합니다.
  • hasMatch 메서드를 사용하여 패스워드가 정규 표현식과 일치하는지 검증합니다.

이 예제에서는 두 개의 패스워드를 검증합니다.

첫 번째 패스워드는 강력한 형식으로 간주되며, 두 번째 패스워드는 요구 사항을 충족하지 않으므로 유효하지 않은 형식으로 간주됩니다.

이 정규 표현식을 사용하여 패스워드의 복잡성을 확인하고, 보안 요구 사항에 맞는 강력한 패스워드를 유지하는 데 도움을 줄 수 있습니다.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

반응형