Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프론트엔드
- 버블정렬
- 코딩테스트
- 알고리즘
- 유데미
- 코드스테이츠 메인프로젝트
- 자료구조
- JavaScript Deep Dive
- CSS
- next/Image
- 정규표현식
- 백준
- sort
- 재귀함수
- Native select
- 백준 nodeJS
- 자바스크립트
- 페이지네이션
- nodejs
- input class
- 배열
- javascript
- Node js
- OSI 7계층
- 이벤트 루프
- 코드스테이츠
- kakao map api
- primitive type
- MUI
- react js
Archives
- Today
- Total
신입 개발자에서 시니어 개발자가 되기까지
31장 정규표현식 본문
개념
a. 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어.
b. 반복문과 조건문 없이 원하는 패턴을 검사할 수 있다.(ex 전화번호 형식 확인)
숫자 3자리 - 숫자 4자리 - 숫자 4자리의 형식으로 패턴을 정의한 것. 이렇게 정의한 후
test메서드에 검사하고자 하는 문자열을 인자로 전달하면 패턴과 맞는지 확인하고 boolean값을 반환한다.
생성
a. /is/i
i. /는 시작과 종료기호, / /사이에는 패턴, i는 플래그를 의미한다.
b. new RegExp(/is/i)
메서드
a. RegExp.prototype.exec : 매칭결과를 배열로 반환
b. RegExp.prototype.test : 매칭결과를 불리언값으로 반환
c. RegExp.prototype.match : 매칭 결과를 배열로 반환, 다만 exec는 g플래그를 지정해도 첫 번째 매칭 결과만 반환하지만, match는 g 플래그가 지정되면 모든 매칭 결과를 배열로 반환한다.
플래그
a. g : Global. 대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색
b. I : ignore case. 대소문자 구별하지 않고 패턴을 검색
c. m : Multi line. 문자열의 행이 바뀌더라도 계속해서 패턴 검색
패턴
a. 임의의 문자열 검색 : .은 임의의 문자 한 개를 의미한다. ..이면 두 자리, ...이면 세 자리 문자열과 매치한다.
const target = "Hi, I'm woong's freind";
const regExp = /..../g;
target.match(regExp); //[ 'Hi, ', "I'm ", 'woon', "g's ", 'frei' ]
dot을 네 개 사용하면 이렇게 네 자리 문자열이 배열로 반환된다.
b. 반복검색 :
i. {m,n}은 중괄호 앞에 위치한 문자열이 최소m번, 최대 n번 반복되는 문자열을 검색한다.
const target = "a aa aaa ababaa";
const regExp = /a{2,3}/g;
const result = target.match(regExp);//[ 'aa', 'aaa', 'aa' ]
ii. {n}은 n번 반복되는 문자열, {n, }은 앞선 패턴이 최소 n번 이상 반복되는 문자열을 뜻한다.
iii. +는 최소 한 번 이상 반복되는 문자열을 의미한다. A+면 A가 한 번 이상 반복되는 문자열을 뜻함. {1, }과 같다.
iv. ?는 앞선 패턴이 최소 0번, 최대 한 번 반복되는 문자열을 의미한다. 물음표 앞의 단어 하나에만 적용이 된다.
const target = "a aa aaba ababaa";
const regExp = /aab?/g;
const result = target.match(regExp); //[ 'aa', 'aab', 'aa' ]
c. OR검색
i. |는 앞의 패턴 또는 뒤의 패턴을 매치한다. 앞에 거 따로, 뒤에 거 따로 매치하는 거임.
const target = "a aa aaba ababaa";
const regExp = /aa|b/g;
const result = target.match(regExp); //[ 'aa', 'aa', 'b', 'b', 'b', 'aa' ]
ii. [ ] 안에 있는 문자는 모두 or로 동작된다.
const target = "a b aaba";
const regExp = /[aab]/g;
const result = target.match(regExp); //[ 'a', 'b', 'a', 'a', 'b', 'a' ]
[ ] +를 사용하면 a+|b+와 [ab]+는 같은 결과를 낸다. 하지만 특이하게도 [aab]+이렇게 하면 aab도 또 포함이 되나보다.. aa+| b+하면 이런 결과가 나오지 않는다.
const target = "aa b aaba";
const regExp = /[aab]+/g;
const result = target.match(regExp); //[ 'aa', 'b', 'aaba' ]
iii. 범위설정은 [ ] 안에 -를 사용한다. [A-Z] 이런식으로.
iv. 대소문자 구별없이 알파벳 검색하기 : /[A-Za-z]+/g
v. 숫자검색하기 : /[0-9]+/g , 만약 숫자의 표기를 위해 쉼표가 있다면 /[0-9,]+
vi. 숫자검색하기2 : /[\d,]+/g, \d는 숫자를 의미한다. \D는 숫자가 아닌 문자를 의미.
vii. 알파벳,숫자,언더스코어 : /[\w,]+/g 이건 [A-Za-z0-9_]와 같다.
d. NOT 검색
i. [ ] 내의 ^은 not의 의미를 지닌다. [^0-9]는 숫자를 제외한 문자를 의미한다.
e. 시작위치로 검색
i. [ ] 밖의 ^은 문자열의 시작을 의미한다. /^https/는 문자열이 https로 시작하는지 검사한다.
f. 마지막 위치로 검색
i. /com$/은 com으로 끝나는지 검사한다.
자주 사용하는 정규표현식
a. 특정 단어로 시작하는지 검사
b. 특정 단어로 끝나는지 검사
c. 숫자로만 이루어진 문자열인지 검사
i. ex) /^\d+$/ : ^는 문자의 시작, $는 마지막을 의미하고 \d는 순자를 의미한다. 그러니까 숫자로 시작하고 숫자로 끝나야 하는데, +가 있으니 숫자 한 개가 아닌 숫자가 한 번 이상 반복되는 문자열을 매칭한다.
d. 하나 이상의 공백으로 시작하는지 검사
i. /^[\s]+/ : \s는 공백문자를 뜻한다.[\t\r\n\v\f]와 같다.
e. 아이디로 사용 가능한지 검사
i. 문자열이 알파벳 대소문자 또는 숫자로 시작하고 끝나며 4~10자리인지 검사하기
/^[A-Za-z0-9]{4,10}$/
f. 메일주소 형식에 맞는지 검사
g. 핸드폰 번호 형식에 맞는지 검사
특수문자 포함여부 검사
'책읽기 > Javascript Deep Dive' 카테고리의 다른 글
[Javascript Deep Dive] 15장 let, const (0) | 2022.10.03 |
---|---|
[Javascript Deep Dive] 24장 클로저 (1) | 2022.10.03 |
[Javascript Deep Dive] 13장 스코프 (0) | 2022.10.03 |
[Javascript Deep Dive] 10장 객체 리터럴 (0) | 2022.10.03 |
[Javascript Deep Dive]9장 타입변환과 단축평가 (0) | 2022.10.03 |