2016년 2월 15일 월요일

자바스크립트의 정규표현식

자바스크립트의 정규표현식

자바스크립트에서 정규표현식은 크게 두 가지로 나뉘어 진다.

      1. 컴파일: 패턴을 찾는 걸 의미

      2. 실행: 찾은 패턴(대상)을 어떠한 작업을  할 것인지

컴파일 하는 방법

      1. 정규표현식 리터럴

            var pattern = /찾고자 하는 문자/;

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

            var pattern = new RegExp('찾고자 하는 문자');

            여기서 RegExp는 regular expression의 약자이다.

      var pattern = /a/ 와 var pattern = new RegExp('a') 는 같은 의미이다.

정규표현식을 사용하는 경우

      1. 자신이 원하는 정보를 추출하고자 할 때

      2. 자신이 원하는 정보가 있는 지 없는 지 테스트 할 때

      3. 찾은 정보를 다른 텍스트로 치환할 때

이제, 실제로 정규표현식 패턴을 이용하여 정보를 추출해보자!

      ex) var pattern = /a/;

            pattern.exec('abcde') --->>> ["a"]

            정규표현식 패턴이 담긴 변수에 exec()메소드를 사용하여
            'a'를 추출하는 경우이다.

            'a'가 존재하므로 'a'가 출력되었지만, 만약 'a'가 없을 경우는 'null'이 리턴된다.

      ex) var pattern = /a./;

            pattern.exec('abcde') --->>> ["ab"]

            'a'뒤에 '.'이 있으므로 'a'뒤에 있는 텍스트가 같이 출력된다.

      ex) var pattern = /a/;

            pattern.test('abcde') --->>> true

            정규표현식 패턴에 담긴 변수에 test()메소드를 사용하여
            'a'가 존재하는지 안하는지 판단하는 경우이다.

            'a'가 존재하므로 true이고, 만약 없을경우 false를 리턴한다.

      ex) var pattern = /a/;

            var str = 'abcde';

            str.match(pattern) --->>> ["a"]

            여기서 match()메소드는 String.match() 구조이다.

            RegExp.exec()메소드와 같은 역할을 하고 있다.

      ex) var pattern = /a/;

            var str = 'abcde';

            str.replace(pattern, 'A') --->>> "Abcde"

            replace()메소드는 치환하는 메소드이고, String.replace() 구조이다.

            첫 번째 인자로 찾고자 하는 패턴을 기입하고, 두 번째 인자로 치환할 문자를 기입

      ex) var xg = /a/;

            "abcdea".match(xg) --->>> ["a"]

            여기서 'a'가 제일 앞과 제일 뒤, 총 2개 이지만 1개만 출력된다.

            'g'키워드를 이용할 경우 검색된 모든 결과를 리턴할 수 있다.

            var og = /a/g;

            "abcdea".match(og) --->>> ["a", "a"]

            이와 같이 'a'가 2개 출력된다.

마지막으로, 정규표현식을 이용하여 캡처를 해보자.

      여기서 캡처란, 괄호안의 패턴을 마치 변수처럼 재사용할 수 있는 걸 의미.

      ex) var pattern = /(\w+)\s(\w+)/;

            var str = "coding everybody";

            var result = str.replace(pattern, "$2, $1") --->>> everybody, coding

            먼저, pattern변수를 보면 \w는 word를 의미한다.

            여기서 word는 숫자, 영어 소문자,  영어 대문자, '_'을 가리킨다.
            \s는 공백을 가리킨다.

            replace()함수를 이용하여 치환을 하는 데, 두 번째 인자 값에 '$'가 있다.
            여기서 '$'는 그룹을 의미한다.

            즉, $2는 '(\w+)\s(\w+)'에서 두 번째 괄호를 가리키고,
            $1는 첫 번째 괄호를 가리킨다.

            두 번째 괄호인 'everybody' 먼저 출력되고 쉼표와 공백을 둔 후,
            첫 번째 괄호인 coding가 결과로 출력되게 되는 것이다.

댓글 없음:

댓글 쓰기

결혼이민비자 신청방법(F-6-1 국민의 배우자)

 제가 일본인 여자친구와 결혼 후, 한국에 귀국하기 위해 신청한 결혼이민비자에 대하여 작성해보도록 하겠습니다. 필자는 일본에서 근무하고 있었으며, 한국에서의 소득은 없었습니다. 결혼이민비자를 신청한 날짜는 2021-04-21 이며, 사증이 발급된 날짜...