ABOUT ME

-

Today
-
Total
-
  • [생활코딩] JavaScript 정규표현식
    Study/JavaScript 2019. 12. 9. 19:48
    반응형

     

    정규표현식 (regular expression)

     

    정규표현식(regular expression)은 문자열에서 특정한 문자를 찾아내는 도구다. 
    정규표현식은 두가지 단계로 이루어진다. 하나는 컴파일(compile) 다른 하나는 실행(execution)이다.

    - 컴파일 compile


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

    객체를 만드는 방법은 두가지가 있다.

    정규표현식 리터럴 :

    var pattern = /a/ 


    정규표현식 객체 생성자 :

    var pattern = new RegExp('a'); 


    - 실행 execution


    object.exec( ) 

    RegExp.exec() 
    console.log(pattern.exec('abcdef')); 
    // ["a"] 

    : 실행결과는 문자열 a를 값으로 하는 배열을 리턴한다.

     

    console.log(pattern.exec('bcdefg')); // null 

    : 인자 'bcdef'에는 a가 없기 때문에 null을 리턴한다.

     

    object.test( ) 

    RegExp.test() 
    console.log(pattern.test('abcdef')); // true 
    cnosole.log(pattern.test('bcdefg')); // false 

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


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

    String.match( ) 

    console.log('abcdef'.match(pattern)); // ["a"] 
    console.log('bcdefg'.match(pattern)); // null 

    : 실행결과는 문자열 a를 값으로 하는 배열을 리턴한다.

    String.replace()

    console.log('abcdef'.replace(pattern, 'A'));  // Abcdef 

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


    - 옵션

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

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

    var xi = /a/; 
    console.log("Abcde".match(xi)); // null 
    var oi = /a/i; 
    console.log("Abcde".match(oi)); // ["A"]; 


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

    var xg = /a/; 
    console.log("abcdea".match(xg)); // ["a"]
    var og = /a/g; 
    console.log("abcdea".match(og)); // ["a", "a"]



    - 캡처


    괄호안의 패턴은 마치 변수처럼 재사용할 수 있다. 이 때 기호 $를 사용하는데 

    아래 코드는 coding과 everybody의 순서를 역전시킨다.

    var pattern = /(\w+)\s(\w+)/; 
    var str = "coding everybody"; 
    var result = str.replace(pattern, "$2 $1"); 
    console.log(result); 
    // "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 ''+url+''; 
    }); 
    console.log(result); 
    // "생활코딩 : http://opentutorials.org/course/1 입니다. 네이버 : http://naver.com 입니다. "
    // 주소 문자열에 하이퍼링크가 걸리게 된다.

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

    반응형

    댓글