안녕하세요, 개발자 제이오입니다.
오늘은 Flutter의 이메일/비밀번호 등 유효성 검사 및 정규표현식에 대해 알아보겠습니다.
- 이메일 유효성 검사
String? validateEmail(String value) {
if (value.isEmpty) {
return '이메일을 입력하세요';
} else {
String pattern =
r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$';
RegExp regExp = RegExp(pattern);
if (!regExp.hasMatch(value)) {
return '잘못된 이메일 형식입니다.';
} else {
return null; //null을 반환하면 정상
}
}
}
해당 유효성 검사는 이메일이 입력창이 비었을 때와
정규표현식을 통해 이메일의 형식에 맞지 않을 경우 예외 메시지를 반환합니다.
- 비밀번호 유효성 검사
String? validatePassword(String value) {
String pattern =
r'^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&\\(\\)\-_=+]).{8,15}$';
RegExp regExp = RegExp(pattern);
if (value.isEmpty) {
return '비밀번호를 입력하세요';
} else if (value.length < 8) {
return '비밀번호는 8자리 이상이어야 합니다';
} else if (!regExp.hasMatch(value)) {
return '특수문자, 문자, 숫자 포함 8자 이상 15자 이내로 입력하세요.';
} else {
return null; //null을 반환하면 정상
}
}
해당 유효성 검사는 비밀번호 입력창이 비었을 때와
비밀번호 자릿수 체크, 정규표현식을 통한 "특수문자, 문자, 숫자 포함 8자 이상 15"의
형식을 체크하고 맞지 않을경우 예외 메시지를 반환합니다.
- 비밀번호 확인 유효성 검사
String? validatePasswordConfirm(String password, String passwordConfirm) {
if (passwordConfirm.isEmpty) {
return '비밀번호 확인칸을 입력하세요';
} else if (password != passwordConfirm) {
return '입력한 비밀번호가 서로 다릅니다.';
} else {
return null; //null을 반환하면 정상
}
}
해당 유효성 검사는 비밀번호 확인 입력창이 비었을 경우와
입력한 비밀번호가 비밀번호 확인과 다를 경우 예외 메시지를 반환합니다.
- 생년월일 유효성 검사
String? validatedateOFBirth(String value) {
if (value.isEmpty) {
return '생년월일을 입력하세요';
} else if (value.length != 6) {
return '생년월일은 6자리여야 합니다.';
} else {
return null; //null을 반환하면 정상
}
}
해당 유효성 검사는 생년월일 입력창이 비었을 경우와
입력한 생년월일이 6자리가 아닐 경우 예외 메시지를 반환합니다.
- 닉네임 유효성 검사
String? validateNickName(String value) {
String pattern = r'[!@#$%^&*(),.?":{}|<>]';
RegExp regExp = RegExp(pattern);
if (value.isEmpty) {
return '닉네임을 입력하세요';
} else if (regExp.hasMatch(value)) {
return '특수문자는 닉네임에 포함할 수 없습니다.';
} else {
return null;
}
}
해당 유효성 검사는 닉네임 입력창이 비었을 경우와
닉네임에 특수문자가 들어갈 경우 예외 메시지를 반환합니다.
이상입니다.
'Flutter Code Library' 카테고리의 다른 글
[Flutter] 정규 표현식(숫자 천단위 콤마) (0) | 2022.02.23 |
---|---|
[Flutter] BottomNavigationBar 사용하기 (0) | 2022.02.20 |
[Flutter] TextFormField Focus Change 함수 (0) | 2022.02.09 |