정규 표현식은 뭔가 특수문자를 사용하여 가독성도 떨어지고 거부감이 든다. 하지만 코딩을 하면서 꼭 필요하다고 느낀다.
RegExp(Regular Expression) 생성자 함수를 호출하여 사용할 수 있습니다.
const a = new RegExp("[a-z]", "gi"); // (표현, 옵션)
const b = /[a-z]/gi // /표현/옵션
총 2가지 방법이 있는데 new RegExp 키워드를 사용하여 만드는 방법과 리터럴 사용하는 방법이다.
const string = 'aaaabbbAAcccCC';
string 변수안에서 a라는 문자열을 찾아보겠습니다.(자바스크립트 메소드를 이용하여 찾을수도 있지만 정규표현식을 연습하기 때문에 정규표현식으로 찾아보겠습니다.)
// new RegExp 사용
let match = new RegExp('a','');
// 리터럴 방식
let match = /a/; // '' 표시는 삭제하고 옵션값이 없으면 제거하면 된다.
console.log(string.match(match));
// output ["a", index: 0, input: "aaaabbbAAcccCC", groups: undefined]
정규표현식을 생성하는 방법은 위에서 언급했듯이 new RegExp
를 사용하거나 //
안에 표현 및 옵션값을 적으면 됩니다.
new RegExp(표현, 옵션), /표현/옵션
위의 코드 new RegExp('a', '')는 'a'라는 문자열을 찾고 옵션값은 따로 없다라는것을 표현한것 입니다.(간단한 예제인 만큼 엄청 간단)
마지막으로 찾을때는 match메소드를 이용하여 찾으면 됩니다.
output값을 확인하면 제대로 찾은 것을 확인할 수 있고, output의 0번째 index값 ("a")값만 확인하면 되긴 하지만 output의 다른 인덱스 값도 확인을 해보겠습니다. 1번째 index는 내가 찾을려고 하는 문자열이 어디에 위치하는지(제일 처음 발견한 위치), 2번째 index는 어디서 찾았는지(string변수에서)
output의 값을 ["a", "a", ....] 이런식으로 배열로 몇개가 해당 문자열에 있는지 찾고 싶을때는 옵션값에 g 옵션을 추가해주면 됩니다.
let match = /a/g;
console.log(string.match(match));
// output: (4) ["a", "a", "a", "a"]
또는 대문자도 포함된 A를 찾고 싶다면 i를 추가하여 gi 옵션을 넣어주면 됩니다.(대,소문자 구분 x)
let match = /a/gi;
console.log(string.match(match));
// output: (6) ["a", "a", "a", "a", "A", "A"]
다음은 정규표현식을 다루는 다양한 메소드를 정리해보겠습니다.