Javascript 정규표현식에 대해

JongIk Park·2021년 6월 14일
0

javascript

목록 보기
5/21
post-thumbnail

정규 표현식은 문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴이다.
자바스크립트에서 정규표현식 또한 객체이다.
주로 replace(), search(), split() 함수와 함께 쓰인다.

⛹🏼‍♂️정규표현식 만들기

- 정규식 리터럴 ( 슬래시 "/"로 감싸는 패턴)

var re = /ab+c/;

⛹🏼‍특수문자 사용하기

  • 검색에서 하나 이상의 b들을 찾거나, 혹은 공백을 찾는 것과 같이 '있는 그대로의 대응' 이상의 대응을 필요로 할 경우, 패턴에 특수한 문자를 포함시킨다.
  • 예를 들어 '/ab*c/' 패턴은 'a'문자 뒤에 0개 이상의 'b'문자가 나타나고 바로 뒤에 'c'문자가 나타나는 문자 조합에 대응된다.

'\'

  • 특수문자가 아닌 문자 앞에서 사용된 백슬래시는
    '해당 문자는 특별하고, 문자 그대로 해석되면 안된다'라는 사실을 가리킨다.
    예를 들어, 앞에 \가 없는 'b'는 보통 소문자 b가 나오는 패턴과 대응된다.
    그러나 '\b'자체는 어떤 문자와도 대응되지 않는다.
    이 문자는 특별한 단어 경계 문자를 형성한다.
  • 특수 문자 앞에 위치한 백슬래시는 '다음에 나오는 문자는 특별하지않고,
    문자 그대로 해석되어야 한다'는 사실을 가리킨다.
    예를 들어, 패턴 /a/ 에서의 특수문자 ''는 0개 이상의 'a' 문자가 등장함을 나타낸다.
    이와는 다르게, 패턴 /a*/ 는 ''이 특별하지 않다는 것을 나타내며,
    'a
    '와 같은 문자열과 대응될 수 있다.

'^'

  • 입력의 시작 부분에 대응된다. 만약 다중행 플래그가 참으로 설정되어 있다면,
    줄 바꿈 문자 바로 다음 부분과도 대응된다.
    예를 들어, /^A/ 는 "an A" 의 'A'와는 대응되지 않는다, 그러나 "An E" 의 'A'와는 대응된다.

'$'

  • 입력의 끝 부분과 대응된다. 만약 다중행 플래그가 참으로 설정되어 있다면,
    줄 바꿈 문자의 바로 앞 부분과도 대응된다.
    예를 들어, /t$/ 는 "eater" 의 't'에는 대응되지 않는다, 그러나 "eat" 과는 대응된다.

'*'

  • 앞의 표현식이 0회 이상 연속으로 반복되는 부분과 대응됩니다. {0,} 와 같은 의미입니다.
    예를 들어, /bo*/ 는 "A ghost booooed" 의 'boooo' 와 대응되고,
    "A bird warbled" 의 'b'에 대응되지만 "A goat grunted" 내의 어느 부분과도 대응되지 않습니다.

'\d'

  • 숫자 문자에 대응됩니다. [0-9]와 동일합니다.
    예를 들어, /\d/ 또는 /[0-9]/는 "B2 is the suite number."에서 '2'에 대응됩니다.

'(x)'

  • 패턴 /(foo) (bar) \1 \2/ 안의 '(foo)' 와 '(bar)'는 문자열"foo bar foo bar"에서 처음의 두 단어에 대응되고 이를 기억합니다.
    패턴 내부의 \1와 \2는 문자열의 마지막 두 단어에 대응됩니다.
    (역주: \n 패턴은 앞의 n번째 포획괄호에 대응된 문자열과 똑같은 문자열에 대응됩니다.)
    \1, \2, \n과 같은 문법은 정규식의 패턴 부분에서 사용됩니다.
    정규식의 치환 부분에서는 $1, $2, $n과 같은 문법이 사용되어야 합니다.
    예를 들어, 'bar foo'.replace( /(...) (...)/, '$2 $1')와 같이 사용되어야 합니다. $& 패턴은 앞에서 대응된 전체 문자열을 가리킵니다.

결론

profile
신입 프론트엔드 개발자

0개의 댓글