JavaScript/Javascript

정규표현식(but 찍먹)

MoZZANG 2022. 2. 17. 17:40

이번 포스팅에서는 정규표현식(Regular expression)을 알아볼...건 아니고 맛만 보려고 한다. 왜냐면 정규표현식을 조금 깊이가 있기때문에 따로 공부를 더 해야하기 때문이다. 따라서 기본적인 정규표현식만 살펴보자.

 

 

정규표현식은 문자열에서 특정한 문자를 찾아내는 도구다. 이 도구를 이용하면 수십줄이 필요한 작업을 한줄로 끝낼 수 있다.

 

정규표현식의 기능은 크게 3가지로 나눌 수 있다.

 

1. 어떤 문자열에서 내가 찾고자 하는 문자열을 추출하는 것.

2. 어떤 문자열에서 내가 찾고자 하는 문자열이 존재하는지 test하는 것(추출은 하지 않는다.)

3. 어떤 문자열에서 내가 찾고자 하는 문자를 찾아서 다른 문자열로 치환하는 것.

 

정규표현식은 두 단계로 이루어진다. 하나는 컴파일(complie)이고 다른 하나는 실행(execution)이다.

컴파일부터 알아보자.

 

<complie>

 

컴파일은 검출하고자 하는 패턴을 만드는 일이다. 우선 정규표현식 객체(Object)를 만들어야 한다. 방법은 2가지이다.

a라는 텍스트를 찾아내는 정규표현식을 만들어보자.

 

방법 1.
방법 2.

▲ 둘 다 문자 a라는 텍스트를 찾겠다는 의미의 정규표현식이다.(RegExp은 Regular Expression의 약자이다.)

 

 

<추출>

 

컴파일해서 객체를 만들었다면 이제 원하는 문자를 찾아보자.

▲ 문자 a를 찾겠다는 의미로 변수 pattern에 a를 대입했고, 이후 '수행하다'라는 의미의 execute의 약자인 exec를 사용하여 a를 찾을 대상을 괄호안에 입력해준다. 즉 '문자열 'abcdef'에서 a를 추출하고 싶다' 라는 의미이고 결과적으로 문자열에서 a가 index 0위치에 있다는 결과를 값으로 하는 '배열'을 리턴한다.

 

만약 추출하고자 하는 문자가 문자열에 없다면 어떻게 될까?

 

▲ 추출하고자 하는 문자(문자열)이 없으면 없다는 의미의 null이 반환된다.

 

 

▲ 추출의 다른 방법이다. 코드문법이 조금은 다르지만 결과값은 동일하다.

 

 

 

 

<Test>

 

test는 확인하는 인자 안에 패턴에 pattern에 해당되는 문자열이 있으면 true, 없으면 false를 리턴한다. 즉 test는 boolean값으로 결과값을 리턴하는 것이 특징이다.

 

예제를 보면서 이해해보자.

 

▲ 추출이 아닌 존재의 유무를 확인하는 test를 하기위해서는 pattern,test( )를 사용한다.

    보다시피  pattern이 해당 문자열(인자 : element)안에 있으면 true, 없으면 false값을 리턴한다.

 

 

 

<치환>

 

대신하다, 치환하다의 의미를 가진 replace를 사용한다. 

▲ 치환의 문법 => 치환의 대상문자열 . replace( -이것을- . '-이것으로 바꾸고 싶다-)); 

 

 

 

 

<옵션(Option)>

 

i 를 붙이면 대소문자를 구분하지 않는다.

▲ xi 는 'i가 없다' 라는 뜻이고 oi는 'i가 있다'라는 뜻의 변수이다.

    위 예제를 보다시피 i를 붙이지 않았을 때는 정확히 입력한 값만을 찾고, i를 붙이면 대소문자를 구분하지 않고 찾는다

 

 

 

 

g를 붙이면 검색된 '모든' 결과를 리턴한다. (g는 global의 약자이다.)

 

▲ 마찬가지로 xg는 'g가 없다'라는 뜻이고, og는 'g가 있다'라는 뜻의 변수이다.

    g가 없을 때는 갯수에 상관없이 하나의 값만 리턴하는데, g가 있으면 인자에 존재하는 모든 값을 리턴해준다.

 

 

'JavaScript > Javascript' 카테고리의 다른 글

비동기 처리  (0) 2022.02.19
유효범위(Scope)  (0) 2022.02.17
객체(Object)  (0) 2022.02.16
배열(Array)  (0) 2022.02.16
함수(Function)  (0) 2022.02.16