javascript /regex?/ 정규 표현식(regular expression)! feat, Dream coding Ellie

min seung moon·2021년 3월 18일
0

Javascript

목록 보기
22/23
post-custom-banner

1. 정규 표현식(regular expression)!

  • 1950년 미국의 수학자 Stephen에 의해 개발
  • 유닉스 계열에서 텍스트를 처리하고 프로세싱 하는데 사용되다가 다양한 언어에서 활용되고 있다

01. /regex?/

  • /..../ (slashes)를 이용해서 정규표현식임을 전달
  • regex? (pattern)에다가 우리가 찾고자 하는패턴을 작성
  • ! (flag)에 옵션을 이용해 어떻게 검색할지 작성

dream coding Ellie Git : https://github.com/dream-ellie/regex

연습용 : https://regexr.com/5mhou

2. pattern

01. Groups and ranges(그룹과 범위)

Charter		뜻
|		또는
()		그룹
[]		문자셋, 괄호안의 어떤 문자든
[^]		부정 문자셋, 괄호안의 어떤 문가 아닐때
(?:)		찾지만 기억하지 않음
  • |, 또는
  • (), Group

  • 문자열의 중간 문자 구분
  • (?:) 그룹화하지 않음

  • [] 문자셋! 하나라도 만족하는것을 찾음

  • [-] 범위 설정


  • [^] 부정 문자 셋

02. Quantifiers (수량)

Charter		뜻
?		없거나 있거나(zero or one)
*		없거나 있거나 많거나(zero or more)
+		하나 또는 많이(one or more)
{n}		n번 반복
{min,}		최소
{min,max}	최소, 그리고 최대
  • ?, 없거나 있거나
  • *, 없거나 있거나 많거나
  • +, 하나 또는 많이
  • {n}, n개
  • {min,}, 최소 min개
  • {min, max}, 최소 min개 최대 max개

03. Boundary-type

Charter		뜻
\b		단어 경계
\B		단어 경계가 아님
^		문장의 시작
$		문장의 끝
  • \b, 단어의 첫부분과 끝부분의 경계를 지정, 특정 문자열 중 단어 앞또는 뒤에서만 사용되는 문자열만 선택하고 싶을 때
    • 특정 문자열이 앞에서 사용될 때
    • 특정 문자열이 뒤에서 사용될 때
  • \B, 단어의 첫부분과 끝부분의 경계를 지정, \b의 반대로 앞 또는 뒷 부분에서 특정 문자열이 사용되지 않을 때
    • 특정문자열이 앞에서 사용되지 않을 때
    • 특정문자열이 뒤에서 사용되지 않을 때
  • ^ 문장에서 시작하는 단어

    • flag에서 m(multiline)을 사용하지 않으면 전체적인 문장 전체에서 시작하는 단어를 찾게 된다

  • & 문장에서 끝나는 단어는 단어

    • flag에서 m(multiline)을 사용하지 않으면 전체적인 문장 전체에서 끝나는 단어를 찾게 된다

04. Character classes

Charter		뜻
\		특수 문자가 아닌 문자
.		어떤 글자(줄바꿈 문자 제외)
\d		digi숫자
\D		digi숫자 아님
\w		word문자
\W		word문자 아님
\s		space 공백
\S		space 공백 아님
  • ., 모든 문자열 선택(새로운 줄바꿈 문자 제외)

  • \, 특수 문자열을 자체를 찾고 싶을 때

  • \d, 숫자 찾기

  • \D, 숫자가 아닌 값 찾기

  • \w, 모든 문자열 찾기

  • \W, 문자열을 제외한

  • \s, 스페이스 띄워쓰기를 찾을 수 있다

  • \S, 띄워쓰기를 제외한

3. 연습

01. 전화번호를 찾는 정규 표현식!

010-898-0893
010 898 0893
010.898.0893
010-405-3412
02-878-8888
/\d\d\d-\d\d\d-\d\d\d\d/gm

/\d{2,3}[-. ]\d{3}[-. ]\d{4}/gm

02. 이메일을 찾는 정규 표현식이메일을 찾는 정규 표현식

dream.coder.ellie@gmail.com
hello@daum.net
hello@daum.co.kr
/[a-zA-Z0-9._+-]+@[a-zA-Z0-9._+-]+\.[a-zA-Z0-9.]/gm

03. 유튜브 주소에서 아이디만 추출

https://www.youtu.be/-ZClicWm0zM
https://youtu.be/-ZClicWm0zM
youtu.be/-ZClicWm0zM
/(?:https?:\/\/)?(?:www\.)?youtu.be\/([a-zA-Z0-9-]{11})/gm


04. console.log로 한번 더 확인해보기!

const regex = /(?:https?:\/\/)?(?:www\.)?youtu.be\/([a-zA-Z0-9-]{11})/;
const url = 'youtu.be/-ZClicWm0zM'
url.match(regex);
const result = url.match(regex);
result[1];

profile
아직까지는 코린이!
post-custom-banner

0개의 댓글