그누보드 [G5] 회원가입 아이디 중복확인 비밀번호 숫자영문특수문자조합체크
페이지 정보
본문
사이트의 안전을 위해서 패스워드를 어렵게 만들 때, 정규식으로 체크를 하는 방법입니다.
1. 정규식 만들기
1. 8자 이상
2. 소문자 최소 한개
3. 대문자 최소 한개
4. 숫자
5. 연속된 글자 3개이상은 안됨
6. 스페이스 안됨.
일때 체크하는 정규식
(?!.*[ ])(?=.*\w)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W])(?!.*(.)\1{2,})^.{8,}$
(?!.*[ ]) : 스페이스가 없고
(?=.*\w) : 워드용 글자가 있고
(?=.*[A-Z]) : 대문자 있고
(?=.*[a-z]) : 소문자가 있고
(?=.*[0-9]) : 숫자가 있고
(?=.*[\W]) : Non 워드글자가 있고.. 이것을 특수기호중 원하는 것으로 변경가능함.
(?!.*(.)\1{2,}) : 이부분이 같은 글자 3개가 연속으로 있는 것을 찾는 부분입니다. \1이 앞에 매칭된 그룹의 반복인데. 이것이 {2,} 로해서 3개이상 (그룹, 그룹반복이 2개이상)
^.{8,} : 8글자 이상
이렇게 만들어진 정규식을 회원가입 로직에 적용해보겠습니다.
2. skin / board / member / register_form.skin.php 내용에서
if (f.w.value == "") {
를 아래와 같이 변경합니다.
// 비밀번호 조합이 영문,숫자,특수문자 3가지가 필수사항 페크하는 정규식 스크립트
//var reg = /^(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{4,}$/;
var reg = /^(?!.*[ ])(?=.*\w)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W])(?!.*(.)\1{2,})^.{8,}$/;
var pw = f.mb_password.value;
if(false === reg.test(pw)) {
alert('비밀번호는 8자 이상이어야 하며, 연속된 글자 3개이상은 안되며, 숫자/대문자/소문자/특수문자를 모두 포함해야 합니다.');
f.mb_password.focus();
return false;
}
// 비밀번호 조합이 영문,숫자,특수문자 3가지가 필수사항 페크하는 정규식 스크립트
if (f.w.value == "") {
참고자료
https://www.apachezone.com/free/4149
https://ysb334kr.tistory.com/167
1. 정규식 만들기
1. 8자 이상
2. 소문자 최소 한개
3. 대문자 최소 한개
4. 숫자
5. 연속된 글자 3개이상은 안됨
6. 스페이스 안됨.
일때 체크하는 정규식
(?!.*[ ])(?=.*\w)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W])(?!.*(.)\1{2,})^.{8,}$
(?!.*[ ]) : 스페이스가 없고
(?=.*\w) : 워드용 글자가 있고
(?=.*[A-Z]) : 대문자 있고
(?=.*[a-z]) : 소문자가 있고
(?=.*[0-9]) : 숫자가 있고
(?=.*[\W]) : Non 워드글자가 있고.. 이것을 특수기호중 원하는 것으로 변경가능함.
(?!.*(.)\1{2,}) : 이부분이 같은 글자 3개가 연속으로 있는 것을 찾는 부분입니다. \1이 앞에 매칭된 그룹의 반복인데. 이것이 {2,} 로해서 3개이상 (그룹, 그룹반복이 2개이상)
^.{8,} : 8글자 이상
이렇게 만들어진 정규식을 회원가입 로직에 적용해보겠습니다.
2. skin / board / member / register_form.skin.php 내용에서
if (f.w.value == "") {
를 아래와 같이 변경합니다.
// 비밀번호 조합이 영문,숫자,특수문자 3가지가 필수사항 페크하는 정규식 스크립트
//var reg = /^(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{4,}$/;
var reg = /^(?!.*[ ])(?=.*\w)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W])(?!.*(.)\1{2,})^.{8,}$/;
var pw = f.mb_password.value;
if(false === reg.test(pw)) {
alert('비밀번호는 8자 이상이어야 하며, 연속된 글자 3개이상은 안되며, 숫자/대문자/소문자/특수문자를 모두 포함해야 합니다.');
f.mb_password.focus();
return false;
}
// 비밀번호 조합이 영문,숫자,특수문자 3가지가 필수사항 페크하는 정규식 스크립트
if (f.w.value == "") {
참고자료
https://www.apachezone.com/free/4149
https://ysb334kr.tistory.com/167
댓글목록
등록된 댓글이 없습니다.