정규표현식

임찬수·2021년 11월 10일
0

개요

문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴

사용법

  • 리터럴 표기법
/ab+c/i

정규표현식이 변하지 않으면 리터럴 표기법으로 생성하여 반복문 안에서 정규표현식을 매번 다시 컴파일하지 않는다는 장점이 있다.

** 추가설명: 리터럴 방식은 스크립트가 불러와질때 컴파일 된다.

  • 생성자
new RegExp('ab+c', 'i') // 생성자

생성자를 사용하여 정규표현식을 사용하면 런타임에 컴파일 되는데, 패턴이 변할 가능성이 있거나 사용자 입력과 같이 알 수 없는 외부 소스에서 가져오는 정규 표현식의 경우 생성 자 함수를 사용하길 권장한다고 한다.

** 추가설명: 생성자 방식은 정규식 실행 시점에 컴파일 된다. 정규식 패턴이 변경되거나 다른 출처로부터 패턴을 가져와야 하는경우 생성자 함수를 사용해라.

함께 사용 할 수 있는 메소드

  • exec()
  • test()
  • match()
  • replace()
  • search()
  • split()

정규표현식의 특수문자

문자
\일반문자앞에 쓸 경우 해당문자를 특별하고, 문자 그대로 해석되면 안된다는 사실을 가리킴 예를 들어 b는 문자 소문자 영문 b를 찾는 패턴이지만 \b는 어떤 문자와도 대응되지 않으며 "단어 경계 문자" 를 형성한다.
특수 문자 앞에 위치한 백슬래시는 다음에 나오는 문자는 특별하지 않고 문자 그대로 해석되어야 한다는 사실을 가리킨다. /a\/는 a과 대응된다.
\\ 역슬래시 자체를 표기하려면 이스케이프 해야한다.
^입력의 시작 부분에 대응되며, 다중행 플래그가 참으로 설정되엉 ㅣㅆ다면 줄 바꿈 문자 바로 다음 부분과도 대응된다. '^'가 문자셋([abc]) 패턴의 첫 글자로 쓰인다면, 역 문자셋의 의미를 가진다.
$/t$/ 와 같이 사용되며 입력의 끝 부분에 대응된다. 줄바꿈이 있다면 다중행 플래그가 참으로 설정되어야 각 행마다 끝 문자열에 대응할 수 있다.
*앞의 표현식의 0회 이상 연속으로 반복되는 부분과 대응 된다. {0,}와 같은 의미
+앞의 표현식의 1회 이상 연속으로 반복되는 부분과 대응 된다. {1,}와 같은 의미
?앞의 표현식이 0 또는 1회 등장하는 부분과 대응된다. {0,1}
.개행 문자를 제외한 모든 단일 문자와 대응된다.

플래그를 사용한 고급검색

도움이되는 자료

(문제) 전화번호 선택하기

  • 전화번호 선택하기

    다음 전화번호에 대응하고 제시 캡처 그룹핑에 알맞게 그룹지정하기

정규표현식: 1?[\s-]?(?(\d{3}))?[\s-]?\d{3}[\s-]?\d{4}

  • 처음 시작 문자가 "1이 있거나 없거나" / "공백이나 -부호가 있거나 없거나" / "( 괄호가 있거나 없거나"
  • 두번째로는 세자리 숫자이고
  • 그 다음 문자가 ")괄호 이거나 아니거나" / "공백이나 -부호가 있거나 없거나" /
  • 그 다음 문자는 세자리 숫자
  • 그 다음은 공백이나 -부호가 있거나 없거나
  • 그 다음 네자리 숫자

(문제) 이메일 아이디 매칭하기

정규표현식: ^([\w.]+)

(문제) HTML 태그만 매칭하기***

문제에서는 태그의 이름 a 또는 div의 이름만 매칭하게 제시 되었지만
코드의 태그만 매칭하게 조금더 풀어보았다.

정규표현식:
1회차 시도: <\w+\s?>|<[\w]+\s[\w]+=['"].+[''']>|<\/\w+>
2회차 시도: <\w+[^>]*>|<\/\w+>

profile
프론트엔드 개발자가 되기 위한 정보를 정리합니다.

0개의 댓글

관련 채용 정보