슈코딩

[정규 표현식] 회원가입 기능 본문

개발일지/Issues

[정규 표현식] 회원가입 기능

Roshu 2022. 5. 25. 16:31

이번 프로젝트에서 회원가입페이지를 만들때 완성도를 높이기 위해서 이전에는 하지 못한 디테일적인 

부분이면서도 일반적인 웹페이지라면 필수인 정규식표현을 Javascript로 사용해보았다. 

정규표현식은 문자열에서 특정 문자조합을 확인하기 위해 사용된다.

 

이름이면 당연히 한글만 입력이되어야하고, 이름이 한글자인 사람은 없기때문에 2글자이상 한글만 가능하게 하였다.

//이름 형식 한글만 입력함수
function check_name(asValue) {
    const regname = /^(?=.*[가-힣])[가-힣]{2,}$/;
    return regname.test(asValue);
}

위에 코드에서 regname = 뒤에 있는 괴상하게 생긴 코드가 바로 한글만 입력가능하게 하는 코드다 뒤에 

숫자 2가 들어간 부분이 글자의 수를 지정한다. {2,} 면 2자이상부터 제한이 없고 {2,7} 이렇게 입력하면 2자부터7자까지

라는 의미가 된다. 이렇게 마찬가지로 아이디에는 특정 특수문자를제외하고는 못들어가게하고 영어로 이루어지게 했다.

//아이디 형식 함수
function check_id(asValue) {
    const regid = /^(?=.*[a-zA-Z])[-a-zA-Z0-9_.]{2,10}$/;
    return regid.test(asValue);
}

비밀번호는 통상적으로 8자이상을 많이 사용해서 8자이상, 대소문자, 특수문자를 포함시켜야하게 작성을했다.

위에 두가지는 함수를 만들어 if문뒤에 함수를실행했을때 아니라면이라는 조건문을 썼고

비밀번호는 RegExp 생성자 ( 패턴을 사용해 텍스트 판별할때 사용) 를 사용해서 구현을했다.

const regExp = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/;
if (!upassword.match(regExp)) {
        alert('비밀번호는 최소8자리 대소문자,특수문자 포함 입력해주세요.')
        $('#help-upw').text('비밀번호는 최소8자리 대소문자,특수문자 포함')
        $('#userpw').focus()
        $('#userpw').val('')
        return;
    }

match라는 메소드 안에 regExp를 넣어 확인하는식으로 했다.

match 말고도 다른메소드들이 있다.

#Method

test : 대응되는 문자열이 있는지 검사하는 메소드 true 나 false를 반환

exec대응되는 문자열을 찾는 메소드.정보를 가지고 있는 배열을 반환하고 찾지 못하면 null을 반환

match : 대응되는 문자열을 찾는 String 메소드 정보를 가지고 있는 배열을 반환하고 찾지 못했다면 null을 반환

search대응되는 문자열이 있는지 검사하는 String 메소드 대응된 부분의 인덱스를 반환

replace : 대응되는 문자열을 찾아 다른 문자열로 치환하는 String 메소드

split : 정규식 혹은 문자열로 대상 문자열을 나누어 배열로 반환하는 String 메소드

 

자주 표현되는 정규식을 정리한 블로그를 보고 나중에도 사용하기위해서 정리를 해봤다.

 

#비밀번호

 

최소 8 자, 하나 이상의 대문자, 하나의 소문자, 하나의 숫자 및 하나의 특수 문자

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

최소 8 자, 하나 이상의 대문자, 하나의 소문자 및 하나의 숫자

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/;

최소 8자, 하나의 이상의 대소문자 및 하나의 숫자, 하나의 특수문자

/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/;

 

#전화번호

 

앞자리가 01이며 (0,1,6,7,8,9) 이며 중간에 3~4자리, 세번째는 4자리인 전화번호

/^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$/;

3자리/ 3,4자리 / 4자리 숫자

 /^\d{3}-\d{3,4}-\d{4}$/;

일반 전화번호

/^\d{2,3}-\d{3,4}-\d{4}$/;

 

 

#이메일

 

'@' 포함여부와 대문자,소문자를 구분하지않게 표현식끝에 i 사용

/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;

 

#아이디

 

영문/숫자/특수문자(._-)가능. 2-10자 입력

/^(?=.*[a-zA-Z])[-a-zA-Z0-9_.]{2,10}$/;

한글만 가능 2자이상

/^(?=.*[가-힣])[가-힣]{2,}$/;

 

 

#파이썬 정규 표현식#

 

[아이디 체크]

import re

def chk_id():
	uid = str(input('id 입력: '))
    reg = r'^[A-Za-z0-9_]{4,20}$'
    
    if not re.search(reg, uid):
    	print('아이디 생성 기준 부적절합니다.')
        
chk_id()

- 아이디는 영문 대소문자,숫자와 '_' 기호만을 활용하여 4자이상 20자 이하로 입력

 

[비밀번호 체크]

import re

def password_chk():
	pwd = str(input('pw 입력 : '))
    reg = r'^(?=.*[A-Za-z])(?=.*[!@#$%^&*?])[A-Za-z\d!@#$%^&*?]{8,20}$'
    
    if not re.search(reg, pwd):
    print('비밀번호 기준 부적절')
    
password_chk()

- 비밀번호는 영문 대소문자, 숫자, 특수문자(!@#$%^&*?)를 사용하되 8자 이상 20자 이하로 제한하여 입력

Comments