프론트단에서 유효성 검증을 할 때에는 정규식 만큼 편한 것이 없다.
하지만 비교적 자주 쓰이지 않으니 그때마다 새로 짜려면 헷갈리기 마련이다.
자주 쓰일만한 패턴들을 정리해보았다.
필수 입력 정규식
let reg_required = /.{1,}/;
이름 관련 정규식
let reg_name1 = /^[가-힣]+$/; // 한글만
let reg_name2 = /^[a-zA-z]+$/; // 영문만
let reg_name3 = /^[a-z]+$/; // 영문 소문자만
let reg_name4 = /^[A-Z]+$/; // 영문 대문자만
let reg_name5 = /^[가-힣a-zA-Z]+$/; // 한글 + 영문만
아이디 관련 정규식
let reg_id1 = /^[a-z0-9_-]{4,20}$/; // 소문자 + 숫자 + 언더바/하이픈 허용 4~20자리
let reg_id2 = /^[A-Za-z]{1}[A-Za-z0-9_-]{3,19}$/ // 반드시 영문으로 시작 숫자+언더바/하이픈 허용 4~20자리
비밀번호 관련 정규식
let reg_pw1 = /^[a-z0-9_-]{6,18}$/; // 단순 6~18자리
let reg_pw2 = /(?=.*[a-zA-ZS])(?=.*?[#?!@$%^&*-]).{6,24}/; // 문자와 특수문자 조합의 6~24 자리
let reg_pw3 = /(?=.*\d)(?=.*[a-zA-ZS]).{8,}/; // 문자, 숫자 1개이상 포함, 8자리 이상
이메일 관련 정규식
let reg_email =/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/; // 길이까지 확실한 검증
전화번호 관련 정규식
let reg_num = /^[0-9]{8,13}$/; // 전화번호 숫자만
let reg_mobile = /^\d{3}-\d{3,4}-\d{4}$/; // 휴대폰 번호
let reg_tel = /^\d{2,3}-\d{3,4}-\d{4}$/; // 일반 전화 번호
주민등록번호 정규식
let reg_num = /([0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[1,2][0-9]|3[0,1]))/;
URL 관련 정규식
let reg_url = /^(https?:\/\/)?([a-z\d\.-]+)\.([a-z\.]{2,6})([\/\w\.-]*)*\/?$/; // URL 검사식
사용방법
if(!reg_name1.test(값)){
alert('error!');
}
Mdn에서의 특수문자 설명
특수문자 |
설명 |
\ |
다음의 규칙에 따라 일치합니다: |
^ | 입력의 시작 부분에 대응됩니다. 만약 다중행 플래그가 참으로 설정되어 있다면, 줄 바꿈 문자 바로 다음 부분과도 대응됩니다. 예를 들어, /^A/ 는 "an A" 의 'A'와는 대응되지 않습니다, 그러나 "An E" 의 'A'와는 대응됩니다. '^' 가 문자셋([abc]) 패턴의 첫 글자로 쓰인다면, 그 때는 전혀 다른 의미를 가집니다. 자세한 내용은 역 문자셋을 참고하세요. |
$ |
입력의 끝 부분과 대응됩니다. 만약 다중행 플래그가 참으로 설정되어 있다면, 줄 바꿈 문자의 바로 앞 부분과도 대응됩니다. 예를 들어, /t$/ 는 "eater" 의 't'에는 대응되지 않습니다, 그러나 "eat" 과는 대응됩니다. |
* |
앞의 표현식이 0회 이상 연속으로 반복되는 부분과 대응됩니다. {0,} 와 같은 의미입니다. 예를 들어, /bo*/ 는 "A ghost booooed" 의 'boooo' 와 대응되고, "A bird warbled" 의 'b'에 대응되지만 "A goat grunted" 내의 어느 부분과도 대응되지 않습니다. |
+ |
앞의 표현식이 1회 이상 연속으로 반복되는 부분과 대응됩니다. {1,} 와 같은 의미입니다. 예를 들어, /a+/ 는 "candy"의 'a'에 대응되고 "caaaaaaandy" 의 모든 'a'들에 대응되지만, "cndy" 내의 어느 부분과도 대응되지 않습니다. |
? | 앞의 표현식이 0 또는 1회 등장하는 부분과 대응됩니다. {0,1} 와 같은 의미입니다. 예를 들어, /e?le?/ 는 "angel"의 'el' 에 대응되고, "angle"의 'le' 에 대응되고 또한 "oslo" 의 'l'에도 대응됩니다. 만약 수량자 *, +, ?, {} 바로 뒤에 사용하면, 기본적으로 탐욕스럽던(가능한 한 많이 대응시킴) 수량자를 탐욕스럽지 않게(가능한 가장 적은 문자들에 대응시킴) 만듭니다. 예를 들어, /\d+/를 "123abc"에 적용시키면 "123"과 대응됩니다. 그러나 /\d+?/를 같은 문자열에 적용시키면 오직 "1"과만 대응됩니다. 또한 이 문자는 x(?=y) 와 x(?!y) 항목에서 설명하는 바와 같이 사전 검증(lookahead assertion)을 위해서도 쓰입니다. |
. |
개행 문자를 제외한 모든 단일 문자와 대응됩니다. 예를 들어, /.n/는 "nay, an apple is on the tree"에서 'an'과 'on'에 대응되지만, 'nay' 에는 대응되지 않습니다. |
keywords : 정규식 한글만, 정규식 영문만, 정규식 소문자만, 정규식 특수문자 포함, 정규식 숫자만, 정규식 이메일, URL 정규식, 정규식 테스트, 자바스크립트 회원가입, 정규식 회원가입, 자바스크립트 유효성 검사
'Javascript' 카테고리의 다른 글
javascript 배열 빈값 채워 넣기 (0) | 2021.05.07 |
---|---|
javascript url get parameter 방법 (0) | 2021.04.30 |
javascript 객체 복사 방법 (0) | 2021.04.19 |
Javascript split 메서드 / Javascript explode (0) | 2021.03.18 |
[ES6] Javascript Spread Operator (전개 구문) (0) | 2021.03.16 |
댓글