쌍용 강북 교육센터 국비학원 Day 53일차
정규표현식
정규표현식 (Regular Expression)은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다.
정규표현식 객체 만들기
/로 시작해서 /로 끝나고 ; 세미콜론을 붙여주면 된다.
Example )
regexp = / pattern / flags ;
regexp = new RegExp ('pattern' , [ 'flags' ] );
[propVal=] RegExp.propName;
- 정규표현식은 기본적으로 대, 소문자를 구분한다.
- 정규표현식은 기본적으로 공백, 탭, 개행키도 구분한다.
- ' \ ' (escape 문자) 다음에 오는 정규식패턴 1개 문자( ^ $ \ . [ ] - ( ) )만 정규식패턴문자로 인식하지 않고 그냥 보통문자로 인식한다. 그러므로 ' \ '도 특별한 의미를 가지는 정규식패턴 문자이다.
- ' . '은 아무 문자 (공백이든 특수기호이든 하여튼 모든것) 1글자를 뜻하는 정규식패턴 문자이다. (연속적으로 사용해 묶음으로 사용할 수 있다)
- 문자1개의 후보군을 사용할때 [ ] 을 사용한다.
- [ - ] 에서 ' - ' 은 범위를 나타내는 정규식패턴 문자이고 ^ 가 [ ]속에 들어가서 쓰이면 not 이라는 부정의 뜻으로 사용된다.
- 서브패턴 () 속에서 사용되어지는 | 은 "문자열을 구분하는 구분자"로써 '또는' 이라는 의미를 가진다. ()는 정규식내에서 패턴을 그룹화 할 때 사용한다.
- 정확한 수량의 갯수를 알아오기 위해서는 {수량갯수}를 사용해서 표현하면 된다.
- 원래 수량자 ? 는 없거나 1개를 뜻하는 것인데 수량자(* + ?) 다음에 바로 ? 가 붙으면 ? 의 뜻이 달라진다. ? 앞에 붙은 수량자의 범위는 그 수량자의 범위에서 제일 적은수를 나타내라는 뜻으로 사용 되어진다. 그래서 *은 0~n 인데 제일 적은 수인 0 이 되어진다. 그러므로 r 다음의 . 의 수량은 0 이 되어지므로 아무글자도 오지 못한다는 뜻이 된다. 즉, 글자 r 1개만 뜻한다.
- \w (word 단어라는 뜻으로 단어는 [A-z0-9_] 을 의미하는 것이다. 공백은 단어에 포함되지 않는다)
- \s (공백을 의미하고 /S - 대문자는 공백이 아닌것을 의미한다)
- \d (숫자를 의미하고 /D - 숫자가 아닌것을 의미한다)
※ 수량자(Quantifiers)
어떠한 패턴이 몇번 만큼 등장하는 것인가를 나타내는 것이다.
- * 은 0 에서 여러개. 즉, *앞에 오는 문자가 있을 수도 있고, 없을 수도 있고, 있다면 여러번 나올수도 있다는 뜻.
- + 은 1 에서 여러개. 즉, +앞에 오는 문자가 적어도 1개 이상 여러번 나올수도 있다는 뜻.
- ? 은 없거나 있다면 오로지 1개만. 즉, ?앞에 오는 문자가 없거나, 있다면 딱 1개만 나올수도 있다는 뜻.
- . 은 정확히 문자 1개만.
자주 사용하는 정규식 유형
- 이메일 체크 정규식 -
var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
- 이메일 체크 정규식 2 -
var regExp = /^[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/
- 핸드폰번호 정규식 (숫자 자릿수만) -
var regExp = /^\d{3}-\d{3,4}-\d{4}$/;
- 핸드폰번호 체크 정규식 -
var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;
- 일반 전화번호 정규식 -
var regExp = /^\d{2,3}-\d{3,4}-\d{4}$/;
- 4글자 이상 20글자 이하 아이디나 비밀번호 정규식 -
var regExp = /^[a-z0-9_]{4,20}$/;
- 비밀번호 2 -
조건 - 6~20 영문 대소문자와 최소 1개의 숫자 혹은 특수 문자를 포함해야 함
var regExp = /^(?=.*[a-zA-Z])((?=.*\d)|(?=.*\W)).{6,20}$/
- 비밀번호 3 -
조건 - 6~12자리 영문, 숫자만허용
var regExp = /^[A-Za-z0-9]{6,12}$/g;
- 비밀번호 4 -
조건 - 숫자, 문자, 특수문자 포함 형태의 8~15자리 이내의 암호 정규식
var regExp = /^.*(?=^.{8,15}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*+=-]).*$/g;
var regExp = /^.*(?=^.{8,15}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).*$/g;
- URL -
var regExp = /^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/
- HTML 태그 -
var regExp = /\<(/?[^\>]+)\>/
- 날짜 - 예) 3/28/2007 또는 3/28/07 -
var regExp = /^\d{1,2}\/\d{1,2}\/\d{2,4}$/
- jpg, gif 또는 png 확장자를 가진 그림 파일명 -
var regExp = /([^\s]+(?=\.(jpg|gif|png))\.\2)/
- 자세한 예제는 첨부된 메모장 참고
'Web > JavaScript' 카테고리의 다른 글
[Node.js] 기본과 사용방법 (0) | 2023.08.07 |
---|---|
쌍용강북교육센터 국비 학원 Day 52일차 JavaScript (우편번호 검색하기, 유효성 검사) (0) | 2023.03.17 |
쌍용강북교육센터 국비 학원 Day 51일차 JavaScript (URI, URL, Checkbox, 팝업창) (0) | 2023.03.16 |
쌍용강북교육센터 국비 학원 Day 50일차 JavaScript (Date 날짜, 시간) (0) | 2023.03.15 |
쌍용강북교육센터 국비 학원 Day 49일차 JavaScript (node 탐색, class 문법) (0) | 2023.03.14 |