ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규표현식(regular expression)
    concept/javascript 2020. 3. 27. 00:11

     

     

    정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴 (MDN)

    문자열에서 특정한 문자를 찾아내는 도구. 이 도구를 이용하면 수십줄이 필요한 작업을 한 줄로 끝낼 수 있다. (생활코딩)

     

    컴파일

    : 실행을 하기 위한 패턴을 만든다.

     

    패턴을 만드는 방법 2가지

    1. 정규표현식 리터럴

    var pattern = /a/;

    2. 정규표현식 객체생성자

    var pattern = new RegExp('a');

    두 가지 모두 같은 결과를 만들지만 각자의 장단점이 있다.

     


     

    실행

    : 찾은 패턴에 대해서 어떠한 작업을 구체적으로 하는 것

     

    1.RegExp.exec()

     

    ::: 기본예제 :::

    //a를 정규표현식으로 지정하고,
    var pattern = /a/;
    //abcde에서 정규표현식을 찾아라.
    pattern.exec('abcde'); // -->['a']

     

    ::: . 의 기능 :::

    //a.으로 정규표현식을 지정하면?
    var pattern = /a./;
    //여기서 .은 어떤 것이든 상관없이 하나의 문자를 말한다.
    그러므로 a와 그 뒤에 따라오는 문자를 함께 반환한다.
    pattern.exec('abcde'); // --> ['ab']

     

    ::: 찾으려는 문자열 안에 정규표현식이 없을 경우? :::

    //a으로 정규표현식을 지정하고
    var pattern = /a/;
    //'bcde'안에서 정규표현식이 없는 경우 null을 반환한다.
    pattern.exec('bcde'); // --> null

     

    2.RegExp.test()

     

    test는 인자 안에 패턴에 해당되는 문자열이 있으면 true, 없으면 false를 리턴한다.

    var pattern = /a/;
    
    pattern.test('abcde'); //--> true;
    pattern.test('bcdef'); //--> false;

     

     

    문자열 메소드 실행

    문자열 객체의 몇몇 메소드는 정규표현식을 사용할 수 있다.

     

    String.match ()

    문자열이 정규식과 매치되는 부분을 검색한다.

    var pattern = /a/;
    var firstStr = 'abcde';
    var secondStr = 'bcdef';
    
    firstStr.match(pattern); //--> ['a']
    secondStr.match(pattern); //--> null

     

    String.replace()

    문자열에서 패턴을 검색해서 이를 변경한 후에 변경된 값을 리턴한다.

    var pattern = /a/;
    
    'abcde'.replace(pattern, 'A') //--> Abcde

     


    옵션

    정규표현식 패턴을 만들 때, 옵션을 설정할 수 있다. 옵션에 따라서 검출되는 데이터가 달라진다.

     

     i 

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

    var xi = /a/;
    'Abcde'.match(xi) //--> null
    
    var oi = /a/i;
    'Abcde'.match(oi) //--> ['A']

     

     g 

    g를 붙이면 검색된 모든 결과를 리턴한다.

    var xg = /a/;
    'abcdea'.match(xg); //-->['a']
    
    var og = /a/g;
    'abcdea'.match(og); //-->['a', 'a']

     


    캡쳐

    괄호 안의 패턴은 마치 변수처럼 재사용할 수 있다. 이 때 기호 $를 사용하는데 아래 코드는 첫번째 문자와 두번째 문자의 순서를 역전시킨다.

    var pattern = /(\w+)\s(\w+)/;
    var str = 'coding everybody';
    var result = str.replace(pattern, '$2, $1'); //--> everybody, coding

     


     

    치환

    아래 코드는 본문 중의 URL을 링크 html 태그로 교체한다. 

    var urlPattern = /\b(?:https?):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*/gim;
    var content = '생활코딩 : http://opentutorials.org/course/1 입니다. 네이버 : http://naver.com 입니다. ';
    var result = content.replace(urlPattern, function(url){
        return '<a href="'+url+'">'+url+'</a>';
    });
    console.log(result);

    결과는 아래와 같다.

    생활코딩 : <a href="http://opentutorials.org/course/1">http://opentutorials.org/course/1</a> 입니다. 네이버 : <a href="http://naver.com">http://naver.com</a> 입니다.
    

     

     

    출처 : 생활코딩

    'concept > javascript' 카테고리의 다른 글

    reduce()  (0) 2020.03.28
    Mutable vs Immutable  (0) 2020.03.27
    문자열 메소드 (string method)  (0) 2020.03.26
    객체 (Object)  (0) 2020.03.26
    함수와 메소드의 차이(Difference between function and method)  (0) 2020.03.25

    댓글

Designed by Tistory.