Javascript

JS 정규표현식

xxoyeong 2020. 8. 26. 18:03

정규표현식:

문자열을 처리하는 방법

특정한 조건의 문자를 검색하거나 치환하는 과정을간편하게 처리 할 수 있도록 하는 수단

 

정규표현식에서 패턴을 만드는 두가지 방법

1. 정규표현식 리터럴

let pattern = /'a'/

  a는 찾고자하는 문자

 

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

let pattern = new RegExp('a');

  a는 찾고자하는 문자

 

->두 방법 모두 찾고자하는 정보를 pattern이라는 변수에 저장 

 

정규표현식을 통해서 할 수 있는 3가지

1. 패턴에 맞는 정보 추출

    Ex) 문자열에서 URL 추출해내

   RegExp.exec()

      let pattern = /'a'/;

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

               ->문자열 a를 값으로 하는 배열을 리턴

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

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

2. TEST 

    Ex) 문자열에서 a가 존재하는지 아닌지 test

   RegExp.test()

   let pattern = /'a'/;

   - console.log(pattern.test('abcdef')); // true

   - cnosole.log(pattern.test('bcdefg')); // false

 

3. 찾은 정보를 치환

 

문자열(String) 객체의 정규 표현식

1. String.match()

   let pattern = /'a'/;

   - let str = 'abcdef';

     str.match(pattern); //  ["a"]

 

   - let str = 'bcdef';

     str.match(pattern);

     null

 

2. String.replace()

   let pattern = /'a'/;

   let str = 'abcdef';

   str.replace(pattern, 'A');

  -> pattern의 a를 str에서 찾아서 A로 바꿔라

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

 

정규 표현식의 옵션

i

i를 붙이면 대소문자를 구분하지 않음

let xi = /a/;

console.log("Abcde".match(xi)); // null

let oi = /a/i;

console.log("Abcde".match(oi)); // ["A"];

 

g

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

let xg = /a/;

console.log("abcdea".match(xg)); // ["a"]  -> a가 두개인데 한개만 출력하고 있음

let og = /a/g;

console.log("abcdea".match(og)); // ["a", "a"] 

 

let ig = /a/ig;  -> i,g 한번에 섞어서 사용도 가능!

 

캡쳐

let pattern = /(\w+)\s(\w+)/;  패턴정리 괄호안의 패턴은 마치 변수처럼 재사용할 수 있다

let str = "coding everybody";  

let result = str.replace(pattern, "$2, $1");

  패턴의 2번째 그룹을 앞으로 보내고 1번째 그룹을 뒤로 공백은 ,로 변경

console.log(result); // everybody, coding

 

치환

let urlPattern = /\b(?:https?):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*/gim;

let content = '네이버 : http://naver.com 입니다. ';

   ->여기서 url을 link로 바꿔주기!

 

let result = content.replace(urlPattern, function(url){

return '<a href="'+url+'">'+url+'</a>';

});

console.log(result);