해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다.
정규표현식(Regular Expression)이란?
정규표현식(regular expression)은 문자열에서 특정한 문자를 찾아내는 도구입니다.
이 도구를 이용하면 수십줄이 필요한 작업을 한 줄로 끝낼 수 있습니다.
이 포스팅은 자바스크립트에서 정규표현식을 어떻게 사용하는 가를 다룬 포스팅이기 때문에,
정규표현식 자체에 대한 정보를 원하신다면 아래 링크가 도움이 되실 것 같습니다.
정규표현식 생성
정규표현식은 두가지 단계로 이루어집니다.
하나는 컴파일(compile), 다른 하나는 실행(execution)입니다. 우선 컴파일부터 알아보도록 하겠습니다.
컴파일
컴파일은 검출하고자 하는 패턴을 만드는 일입니다.
패턴을 만들려면 우선 정규표현식 객체를 만들어야 하는데, 객체를 만드는 방법은 두가지가 존재합니다.
정규표현식 리터럴과 정규표현식 객체 생성자 가 그 방법입니다.
정규표현식 리터럴
var pattern = /a/;
찾고자 하는 문자열을 /(슬래쉬) 로 감싸는 방법입니다.
정규표현식 객체 생성자
var pattern = new RegExp('a');
new RegExp('패턴화 시킬 문자열') 의 형태로 정규표현식 객체를 생성합니다.
실행
정규표현식을 컴파일해서 객체를 만들었다면 이제 문자열에서 원하는 문자를 찾아내야 합니다.
RegExp.exec()
정규표현식 객체에 들어간 패턴을 찾아 출력해줍니다.
예를 들어보겠습니다.
var pattern = /a/
console.log(pattern.exec('abcdef')); // ["a"]
exec('탐색당할 문자열')
의 형태로 쓰입니다.
만약 a 에 해당하는 문자가 없다면, null 이 출력됩니다.
var pattern = /a/
console.log(pattern.exec('bcdefg')); // null
RegExp.test()
test는 인자 안에 패턴에 해당되는 문자열이 있으면 true, 없으면 false를 리턴합니다.
var pattern = /a/
console.log(pattern.test('abcdef')); // true
console.log(pattern.test('bcdefg')); // false
문자열 객체의 몇몇 메소드는 정규표현식을 사용할 수 있습니다.
String.match()
앞서 언급했던 RegExp.exec()와 유사합니다.
var pattern = /a/
console.log('abcdef'.match(pattern)); // ["a"]
console.log('bcdefg'.match(pattern)); // null
String.replace()
문자열에서 패턴을 검색해서 이를 변경한 후에 변경된 값을 리턴합니다.
var pattern = /a/
console.log('abcdef'.replace(pattern, 'A')); // Abcdef
정규표현식 옵션(i, g)
정규표현식 패턴을 만들 때 옵션을 설정할 수 있습니다.
옵션에 따라서 검출되는 데이터가 달라집니다.
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));
var og = /a/g;
console.log("abcdea".match(og));
이러한 옵션들은 여러개 붙여서 사용가능합니다.
정규표현식 :: 캡쳐
var pattern = /(\w+)\s(\w+)/;
var str = "coding test";
var result = str.replace(pattern, "$2, $1");
console.log(result);
우선 pattern 에 들어있는 것을 해석하자면,
괄호는 그룹이고,
\w 는 A-Z, a-z, 0-9 의 문자를 의미합니다.
뒤에 붙은 +는 1개 이상이라는 뜻이고,
\s 는 공백입니다.
즉, pattern은 1개 이상의 문자, 공백, 1개 이상의 문자 로 이루어진 패턴임을 알 수 있습니다.
replace 안에 들어있는 "$2 $1" 의 의미도 살펴봅시다.
$의 의미는 그룹화(괄호로 묶인)된 것에 번호를 붙인 것입니다.
위의 예시에서 coding 은 $1 에 해당하고, test는 $2에 해당하는 것이죠.
이제 예제를 실행시켜 보도록 하겠습니다.
괄호안의 패턴은 마치 변수처럼 재사용할 수 있습니다.
'Archive > Develop' 카테고리의 다른 글
[ JavaScript ] 자바스크립트 함수 지향 | 메소드와 함수 차이 | 함수 리턴값 | 함수 배열 (0) | 2021.02.03 |
---|---|
[ JavaScript ] 자바스크립트 전역변수와 지역변수 | 변수의 유효범위 (0) | 2021.02.03 |
[ JavaScript ] 자바스크립트 기본 문법 | API란 무엇인가 | 자바스크립트 API | node.js API (0) | 2021.02.03 |
[ JavaScript ] 자바스크립트 기본 문법 | 모듈이란 무엇인가 | 라이브러리란 무엇인가 (0) | 2021.02.03 |
[ JavaScript ] 자바스크립트 기본 문법 | 객체(Object) 생성| this란 무엇인가 | 객체 for 문 | for in (0) | 2021.02.03 |