정규표현식
2021. 3. 4. 17:39ㆍ개발이야기
728x90
반응형
정규 표현식(Regular Expression) /정규표현식/플래그
- 텍스트에서 우리가 원하는 특정한 패턴을 찾을 때 아주 요긴하게 쓰일 수 있다.
- 예) 아주 긴 글에서 전화번호 형태의 패턴을 찾거나 웹사이트 형태의 패턴을 찾을 때도 사용될 수 있음
- 찾아진 문자열을 다른 문자열로 변경도 가능
- 또는 사용자가 입력한 데이터가 이메일이나 패스워드와 같은 특정한 패턴에 부합하는지 - 유효성 검사를 할 때에도 쓰일 수 있음
- // 슬래쉬를 이용해서 나타내주면 된다. 슬래쉬 안에 우리가 찾고자하는 패턴을 작성해주면 된다. 그리고 어떤 옵션으로 검색할 건지 플래그를 활용할 수 있다.
플래그
- 글로벌과 멀티라인을 이용할 것임
- 글로벌: 매칭되는 다수의 결과값을 기억할 수 있는 것을 말함
- 멀티라인: 한 줄 한 줄
1. 그룹,레인지
- 일반 텍스트 검사
- /Hi/gm정규표현식에서도 그냥 일반 텍스트를 검사할 수 있다.
- | 또는(OR)
- /(Hi|Hello)/gm: | (OR 연산자)를 사용할 수 있음
- () 그룹
- /(Hi|Hello)/gm : 이렇게 소괄호로 묶으면 같은 그룹1안에 들어간다.
- /(Hi|Hello)|(And)/gm : hi혹은hello 그룹을 찾거나 / And라는 그룹을 찾게 된다
- /gr(e|a)y/gm : gr로 시작하면서 e혹은 a를 가지고 있고 y로 끝나는 단어를 찾고 싶을 때 (grey, gray)
- (?:) 찾지만 기억하지는 않음
- /gr(?:e|a)y/gm : ?:을 이용하면 찾아지긴 하지만 더 이상 그룹이 지정되지 않는다.
- [] 문자셋, 괄호안의 어떤 문자든
- /gr[aed]y/gm : []대괄호안에 들어가는 문자중에 하나라도 만족하는 것이 있을 때 이용할 수 있음
- /gr[a-f]y/gm : [a-f]: a부터 f까지 만족하는 것으로 작성 가능
- [^] NOT, 괄호안의 문자가 아닐 때
- /[^a-z]/gm : a부터z 를 제외하고 문자를 찾음
2. 수량
- ? 없거나 있거나(zero or one)
- /gra?y/gm : a가 없거나 있거나를 찾음(gry, gray)
- * 없거나 있거나 많거나 (zero or more)
- /gra*y/gm : a가 없거나 있거나 많거나를 찾음(gry, gray, graay, graaay…)
- + 하나 또는 많이(one or more)
- /gra+y/gm : a가 하나있거나 그 이상인 경우를 찾음(gray, graay, graaay..)
- {n} n번 반복
- /gra{2}y/gm : a가 2개 나타나는 경우를 찾음 (graay)
- {min, } 최소
- /gra{2,}y/gm : a가 최소 2개부터나타나는 경우를 찾음(graay, graaay)
- {min,max} 최소 그리고 최대
- /gra{2,3}y/gm : a가 최소 2개, 최대 3개까지 나타나는 경우를 찾음(graay, graaay)
3. 경계
- \b 단어 경계
- /\bYa/gm : 단어 Ya중에서 앞에서 쓰이는 Ya만 찾음
- /Ya\b /gm : 단어 Ya 중에서 뒤에서 쓰이는 Ya만 찾음
- \B 단어 경계가 아님
- /Ya\B/gm : 단어 Ya중에서 뒤에서 쓰이지 않는 Ya만 찾음
- ^ 문장의 시작
- /^Ya/gm : 문장에서 시작하는 Ya를 선택함
- $ 문장의 끝
- /Ya$/gm : 문장에 끝에 나오는 Ya를 선택함
- global과 multiline의 차이점: 글로벌은 문장 기준이 처음부터 끝까지 이고 multiline은 줄이 기준이기 때문에 문장 끝에 나오는 Ya를 검색했을 경우 글로벌은 맨 마지막만 본다.
- 여러줄에서 검사를 하고 싶을 때에는 m 옵셥을 키고 검사하는게 좋다
4. 문자, 숫자
- \ 특수 문자가 아닌 문자
- 정규 표현식에서 특별한 의미를 갖는 문자를 정말 찾고 싶다면(예를 들어 . 이나 ? 를 진짜 찾고 싶다면 \를 사용해야 한다.)
- /\ ./gm : . 을 찾고 싶을 때
- . 어떤 글자(줄바꿈 문자 제외)
- /./gm : 줄바꿈 문자를 제외하고 모든 문자를 찾음
- \ d digit 숫자
- /\ d/gm: 숫자를 전부 찾을 수 있음
- \D digit 숫자 아님
- /\ D/gm: 숫자가 아닌 모든 것을 찾을 수 있음
- \w 문자
- \W 문자 아님
- \s 공백(space)
- \S 공백(space)아님
자바스크립트에서 활용하는법
const regex = /(?:https?:\/\/)?(?:www\.)?youtube\/([a-zA-Z0-9-]{11})/;
const url = 'https://www.youtu.be/-ZClicWm0zM';
url.match(regex);
이렇게 정규표현식과 url을 매치시키면 url.match(regex)의 결과값이 배열로 리턴이 되는데 배열의 첫번째 원소는 매칭되는 전체 문자열이 들어가 있고 배열의 두번째 원소에는 매칭되는 그룹의 데이터가 들어있는 것을 볼 수가 있다.
const result = url.match(regex); //뭔가 활용을 하고 싶다면 이렇게 할당을 해준다.
result[1]; // result[1] = -ZClicWm0zM
유용한 사이트
정규표현식 정리(엘리) https://github.com/dream-ellie/regex
연습할 수 있는 사이트 https://regexr.com/5mhou
정규표현식 라이브러리 https://regex101.com/library?filterFlavors=javascript
728x90
반응형
'개발이야기' 카테고리의 다른 글
네이버 부스트캠프 6기 2021 (웹·모바일) 최종 합격 (0) | 2021.07.13 |
---|---|
쿠키와 세션의 차이 (0) | 2021.03.10 |
[생활코딩] 서버와 클라이언트/서버제어 (0) | 2021.01.06 |
[생활코딩] 웹 애플리케이션을 만드는 순서 (0) | 2021.01.06 |
[생활코딩] 웹 어플리케이션 만들기 오리엔테이션 (0) | 2021.01.06 |