모던 자바스크립트 Deep Dive 글 목록(스터디)
https://hello-kk.tistory.com/780
● RegExp 메서드
메서드 | 결과 예시 | |
RegExp.prototype.exec | 1. 매칭 결과를 배열로 반환 2. 매칭 결과가 없는 경우 null 반환 ※ 매칭 첫번째 결과만 반환 |
["패턴", index: 인덱스, input: "주어진 문장", groups: ] |
RegExp.prototype.test | 1. 매칭 결과를 불리언 값으로 반환 | true/false |
RegExp.prototype.match | 1. 매칭 결과를 배열로 반환 ※ g 플래그가 지정되면, 모든 매칭 결과를 반환 |
["패턴", "패턴", '패턴"] |
● 플래그
● [ ] 대괄호 : 그룹이 아님. 그 중에 하나
● \D: 숫자가 아닌 문자
● \W: 알파벳, 숫자, 언더스코어가 아닌 문자
● NOT 검색: [^ ] => 대괄호 안에서
● 시작 위치로 검색: ^ => 대괄호 밖에서. 괄호가 없을 때도
● 마지막 위치로 검색: $
★ 연습하기 ★
특정 단어로 시작하는지 | /^https?:\/\/ |
특정 단어로 끝나는지 | /html$/ (=> html로 끝나는지) |
숫자로만 이루어진 문자열인지 | /^\d+$/ |
하나 이상의 공백으로 시작하는지 | /^[\s]+/ |
아이디로 사용 가능한지 | /^[A-Za-z0-9]{4,10}$/ |
메일 주소 형식에 맞는지 | /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.([a-zA-Z]{2,3}$/) |
핸드폰 번호 형식에 맞는지 | /^\d{3}-\d{3,4}-\d{4}/ |
특수 문자 포함 여부 검사 | /[^A-Za-z0-9] |
31.1 정규 표현식이란?
일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어
=> 패턴 매칭 기능
단, 주석, 공백을 허용하지 않는다.
31.2 정규 표현식의 생성
/패턴/플래그
/regexp/i
i: 대소문자를 구분하지 않는다
const target = ' 문장 '
const regexp = new RegExp(/패턴/플래그)
const regexp = new RegExp(/패턴/,'플래그')
regexp.test(target)
31.3 RegExp 메서드
31.3.1 RegExp.prototype.exec
메서드 | 결과 예시 | |
RegExp.prototype.exec | 1. 매칭 결과를 배열로 반환 2. 매칭 결과가 없는 경우 null 반환 ※ 매칭 첫번째 결과만 반환 |
["패턴", index: 인덱스, input: "주어진 문장", groups: ] |
RegExp.prototype.test | 1. 매칭 결과를 불리언 값으로 반환 | true/false |
RegExp.prototype.match | 1. 매칭 결과를 배열로 반환 ※ g 플래그가 지정되면, 모든 매칭 결과를 반환 |
["패턴", "패턴", '패턴"] |
31.4 플래그
● 옵션
● 순서 관계 없음
● 플래그 생략시: 첫번째만 반환, 대소문자 구분
플래그 | 의미 | 설명 |
i | ignore case | 대소문자 구별X |
g | global | 대상 문자열 내에서 패턴과 일치하는 모든 문자열 전역 검색 |
m | multiline | 문자열의 행이 바뀌더라도 패턴 검색을 계속 한다 |
31.5 패턴
31.5.1 문자열 검색
31.5.2 임의의 문자열 검색
. | {m, n} | {n, } | + ( {1, }과 같다) | ? ( {0, }과 같다) |
임의 문자 한 개 | 패턴이 최소m번, 최대 n번 반복 | 패턴이 최소 n번 이상 반복 | 패턴이 최소 한번 이상 반복 | 패턴이 최대 한번 이상 반복 |
31.5.4 OR 검색
| : or의 의미
/A|B/ | /A+|B+/ | /[AB]+/ | /[A-Z]+/ | /[A-Za-z]+/ | /[0-9]+/ | /[0-9,]+/ | |
'A'또는 'B' | 'A'또는 'B'가 한번 이상 반복되는 문자열 | 'A'또는 'B'가 한번 이상 반복되는 문자열 | 'A'또는 'B'가 한번 이상 반복되는 문자열 범위를 '-'로 지정 |
'A'~'Z'또는'a'~'z'가 한 번 이상 반복되는 문자열 | '0'~'9'가 한 번 이상 반복되는 문자열 | '0'~'9'또는 ','가 가 한 번 이상 반복되는 문자열 |
/A|B/ | 'A'또는 'B' |
/A+|B+/ | 'A'또는 'B'가 한번 이상 반복되는 문자열 |
/[AB]+/ | 'A'또는 'B'가 한번 이상 반복되는 문자열 |
/[A-Z]+/ | 'A'또는 'B'가 한번 이상 반복되는 문자열 범위를 '-'로 지정 |
/[A-Za-z]+/ | 'A'~'Z'또는'a'~'z'가 한 번 이상 반복되는 문자열 |
/[0-9]+/ | '0'~'9'가 한 번 이상 반복되는 문자열 |
/[0-9,]+/ | '0'~'9'또는 ','가 가 한 번 이상 반복되는 문자열 |
/[\d,]+/ | '0'~'9'또는 ','가 가 한 번 이상 반복되는 문자열 |
/[\D,]+/ | '0'~'9'가 아닌 문자(숫자가 아닌 문자) 또는 ','가 가 한 번 이상 반복되는 문자열 |
/[\w,]+/ | 알파벳, 숫자, 언더스코어, ','가 한 번 이상 반복되는 문자열을 전역 검색 |
/[\W,]+/ | 알파벳, 숫자, 언더스코어가 아닌 문자 또는 ','가 한 번 이상 반복되는 문자열을 전역 검색 |
31.5.5 NOT 검색: [^ ]
31.5.6 시작 위치로 검색: ^
31.5.7 마지막 위치로 검색: $
/[^0-9]+/ | /[^A-Za-z9-9_]+/ | /^https/ | $ |
\D | \W | https로 시작하는지 검색 | /com$/ |
31.6 자주 사용하는 정규표현식
특정 단어로 시작하는지 | /^https?:\/\/ |
특정 단어로 끝나는지 | /html$/ (=> html로 끝나는지) |
숫자로만 이루어진 문자열인지 | /^\d+$/ |
하나 이상의 공백으로 시작하는지 | /^[\s]+/ |
아이디로 사용 가능한지 | /^[A-Za-z0-9]{4,10}$/ |
메일 주소 형식에 맞는지 | /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.([a-zA-Z]{2,3}$/) |
핸드폰 번호 형식에 맞는지 | /^\d{3}-\d{3,4}-\d{4}/ |
특수 문자 포함 여부 검사 | /[^A-Za-z0-9] |
특수문자 제거
String.prototype.replace()
'Front-End > JavaScript' 카테고리의 다른 글
fetch axios header proxy Proxy URL CORS까지 (1) | 2023.12.11 |
---|---|
fetch (0) | 2023.10.31 |
35장 스프레드 문법 36장 디스트럭처링 할당 (모던 자바스크립트 Deep Dive) (0) | 2023.06.05 |
40장 이벤트 (모던 자바스크립트 Deep Dive) (0) | 2023.05.28 |
39장 DOM (모던 자바스크립트 Deep Dive) (0) | 2023.05.25 |