ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규표현식
    JavaScript 2022. 1. 25. 21:16

    자바스크립트의 정규표현식에 대해 정리하였습니다.

     

     


    < 정규표현식이란? >

    정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다.
    -> 즉, 문자열에서 특정한 문자를 찾아내는 도구입니다

    자바스크립트에서, 정규 표현식은 { 객체 } 입니다.

     

    실제 사용 예시)

    1. 이메일 유효성 검사

    let regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;

     

    2 휴대폰 번호 유효성 검사

    let regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;

     

     


    < 사용방법 >

    정규표현식을 사용하는 방법은 두가지가 있습니다.

     

    1. 리터럴

    : 슬래쉬("/")로 감싸는 패턴

    const example = /a/;
    // 컴퓨터에게 'a'를 찾을 것이라고 명령함.

     

    2. RegExp 객체 사용

    : RegExp의 생성자 함수 사용

    const example = new RegExp("a");
    // 컴퓨터에게 'a'를 찾을 것이라고 명령함.

     

     


    < 정규표현식에서 쓰이는 메소드 >

    메소드를 이용하면 어떤 문자열 안에 원하는 정보를 찾거나 특정 패턴에 대응하는 문자열을 검색, 추출, 다른 문자열로 치환할 수 있습니다.

    JavaScript 에서 정규표현식은 객체로서 내장 메소드를 가지고 있으며, String 객체에서도 정규표현식을 사용할 수 있는 내장메소드를 가지고 있습니다.

     

    1. exec( ) [RegExp] : 원하는 정보를 반환하고자 할 때

    - 검색의 대상이 찾고자 하는 문자열에 대한 정보를 가지고 있다면 이를 배열로 반환하며, 찾는 문자열이 없다면 null을 반환합니다.

    ex)

    let pattern = /c/;
    pattern.exec('code')
    // ['c', index: 0, input: 'code', groups: undefined]
    
    pattern = /i/;
    pattern.exec('code')
    // null

     

    2. test( ) [RegExp] : 찾는 정보가 있는지 없는지 확인할 때

    - boolean 값으로 리턴

    ex)

    let pattern = /c/;
    pattern.test('code');
    // true

     

    3. match( ) [String] : 원하는 정보를 반환하고자 할 때 => exec( ) 과 비슷함!

    - 정규 표현식을 인자로 받아 주어진 문자열과 일치된 결과를 배열로 반환합니다. 일치되는 결과가 없으면 null 을 리턴합니다.

    ex)

    let pattern = /c/;
    'code'.match(pattern);
    // ['c', index: 0, input: 'code', groups: undefined]
    
    let pattern = /i/;
    'code'.match(pattern);
    // null

     

    4. replace( ) [String] : 어떤 패턴(문자)을 원하는 정보로 바꾸고 싶을 때

    - 첫 번째 인자로는 정규표현식을 받고, 두 번째 인자로는 치환하려는 문자열을 받습니다. 패턴에 포함되는 문자열을 치환하려는 문자열로 변경 후 변겨된 값을 리턴합니다.

    ex)

    let pattern = /c/;
    let str = 'code';
    str.replace(pattern, 'C');
    // 'Code'

     

    5. split( ) [String] : 문자열을 부분 문자열로 나누어 배열에 담고 싶을 때

    - 주어진 인자를 구분자로 삼아, 배열로 리턴

    ex)

    "123,456,789".split(",")
    // ["123", "456", "789"]
    
    "12304560789".split("0")
    // ["123", "456", "789"]

     

    6. search( ) [String] : 특정 패턴에 가장 처음 해당하는 문자열의 위치를 알고 싶을 때

    - 정규표현식을 인자로 받아 가장 처음 매칭되는 부분 문자열의 위치를 반환합니다. 매칭되는 문자열이 없으면 -1을 반환합니다.

    ex)

    "JavaScript".search(/script/);
    // -1 대소문자를 구분
    
    "JavaScript".search(/Script/);
    // 4
    
    "code".search(/ode/);
    // 1

     

     


    < Flag >

    정규표현식은 플래그를 설정해 줄 수 있으며, 플래그는 추가적인 검색 옵션의 역할을 해 줍니다.

    플래그들은 함께 사용이 가능하고, 순서에 구분이 없습니다.

     

    자주 사용하는 3가지 플래그

    i : 대소문자를 구분하지 않음.

    let pattern1 = /c/i;
    let pattern2 = /c/;
    
    'Code'.match(pattern1);
    // ['C', index: 0, input: 'Code', groups: undefined]
    
    'Code'.match(pattern2);
    // null

     

    g : 검색된 모든 결과를 반환(global).

    let pattern1 = /c/g;
    let pattern2 = /c/;
    
    'coolcoolcool'.match(pattern1);
    // ['c', 'c', 'c']
    
    'coolcoolcool'.match(pattern2);
    // ['c', index: 0, input: 'coolcoolcool', groups: undefined]

     

    m : 다중행을 검색.

    let str = `1st : cool
    2nd : code
    3rd : states`;
    
    str.match(/c/gm)
    // ['c', 'c']
    
    str.match(/c/m)
    // ['c'] 첫 행의 'c'만 리턴

     

     


    < 패턴(표현식) >

    정규표현식에서 /a/ 처럼 단순히 문자만 사용할 수도 있지만,
    다양한 특수기호를 함께 사용하면 문자열을 다룰 때에 더 많은 옵션을 설정할 수 있습니다.

     

    [대표적인 특수문자들]

    ^ 줄(Line)의 시작에서 일치 /^abc/
    $ 줄(Line)의 끝에서 일치 /xyz$/
    . (특수기호, 띄어쓰기를 포함한) 임의의 한 문자
    a|b a or b 와 일치, 인덱스가 작은 것을 우선 반환
    * 0회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {0,} 와 동일
    *? 0회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {0} 와 동일
    + 1회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {1,} 와 동일
    +? 1회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {1} 와 동일
    {3} 숫자 3개 연속 일치
    {3,} 3개 이상 연속 일치
    {3, 5} 3개 이상 5개 이하 연속 일치
    () 캡쳐(capture)할 그룹
    [a-z] a부터 z 사이의 문자 구간에 일치(영어 소문자)
    [A-Z] A부터 Z 사이의 문자 구간에 일치(영어 대문자)
    [0-9] 0부터 9 사이의 문자 구간에 일치(숫자)
    \(역슬래쉬) escape 문자. 특수 기호 앞에 \를 붙이면 정규식 패턴이 아닌, 기호 자체로 인식
    \d 숫자를 검색함. /[0-9]/와 동일
    \D 숫자가 아닌 문자를 검색함. /[^0-9]/와 동일
    \w 영어대소문자, 숫자, (underscore)를 검색함. /[A-Za-z0-9]/ 와 동일
    \W 영어대소문자, 숫자, (underscore)가 아닌 문자를 검색함. /[^A-Za-z0-9]/ 와 동일
    [^] []안의 문자열 앞에 ^이 쓰이면, []안에 없는 문자를 검색함

     

    MDN - 정규표현식

     

    정규 표현식 - JavaScript | MDN

    정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서, 정규 표현식 또한 객체입니다.  이 패턴들은 RegExp의 exec 메소드와 test 메소드  ,

    developer.mozilla.org

     

     

     

    'JavaScript' 카테고리의 다른 글

    Requests 2  (0) 2021.12.15
    Requests 1  (0) 2021.12.13
    Async Await  (0) 2021.12.13
    Promise  (0) 2021.12.13
    Asynchronous / Event Loop  (0) 2021.12.12

    댓글

Designed by Tistory.