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

 

 

정규표현식(Regular Expression)

 

 

문자열안에 특정 내용을 찾거나 대체 또는 발췌하기 위해 사용한다.

 

ex) 회원가입시 사용자에게 받는 정보(전화번호, 이메일 등)가 유효한지 체크해야할 경우 정규표현식을 사용

 

정규표현식은 주석이나 공백을 허용하지 않고 여러가지 기호를 혼합하여 사용하기 때문에 가독성이 좋지 않다는 문제가 있다.

 

/ 패턴(Pattern) / 플래그(Flag)

 

const tel = '010-1234-5678';

// 정규 표현식 리터럴

const myRegExp = /1234/;

console.log(myRegExp.test(tel)); // true

 

자바스크립트 정규표현식 메소드

 

const targetStr = 'This is a pen.';
const regexr = /is/ig;

// RegExp 객체의 메소드

console.log(regexr.exec(targetStr)); // [ 'is', index: 2, input: 'This is a pen.' ]
console.log(regexr.test(targetStr)); // true


// String 객체의 메소드

console.log(targetStr.match(regexr)); // [ 'is', 'is' ]
console.log(targetStr.replace(regexr, 'IS')); // ThIS IS a pen.


// String.prototype.search는 검색된 문자열의 첫번째 인덱스를 반환한다.

console.log(targetStr.search(regexr)); // 2 ← index
console.log(targetStr.split(regexr));  // [ 'Th', ' ', ' a pen.' ] 

 

*플래그(Flag)*

 

i : 대소문자를 구별하지 않고 검색

g : 문자열 내의 모든 패턴을 검색(다수 검색)

m : 문자열의 행이 바뀌더라도 검색을 계속

 

플래그는 선택적으로 사용하며, 사용하지 않을 경우

검색 대상이 2개 이상이여도 첫번째 매칭 대상만 검색하고 종료한다.

 

 

 

 

*패턴(Pattern)*

 

패턴에는 검색하고 싶은 문자열을 지정한다. 따옴표는 생략

 

'.' 온점은 임의의 문자 한 개를 의미한다. ex)  /.a/   =   ['aa', 'ba', ca'...]

'+'는 해당 문자열이 첫번째로 나오는 패턴 ex) /A+/    =    ['A', 'AA' , 'AAA'...]

'|'는 or을 의미한다.  ex)  /A|B/

'[]'는 문자일 경우 OR로 인식한다.

범위를 지정하려면 '[A-Z]' 형식으로 사용

 

 

3글자의 문자열 중 마지막이 'x'로 끝나는 문자열 1개 검색

const targetStr = 'AAA BBB CCX DDD';

// 임의의 문자 3개
const regexr = /..X/;

console.log(targetStr.match(regexr));
 
 //["CCX", index: 8, input: "AAA BBB CCX DDD"]
      

 

0~9가 한 번 이상 반복되는 문자열을 반복 검색

const targetStr = 'AA BB Aa Bb 99,000';

const regexr = /[0-9]+/g;

console.log(targetStr.match(regexr)); // [ '99', '000' ]

 

0~9 또는 ','가 한번 이상 반복되는 문자열을 반복 검색

const targetStr = 'AA BB Aa Bb 99,000';

const regexr = /[0-9,]+/g;

console.log(targetStr.match(regexr)); // [ '99,000' ]

 

 

/[0-9,]+/g = /[\d,]+/g

 

 

 

정규표현식은 복잡하고 상황에 따라 식이 바뀌므로 자주 사용하는 정규표현식을 통째로 모아 포스팅하겠습니다.