2022. 3. 17. 18:52ㆍBACK END/NODE.JS
RegExp와 String 메소드는 정규표현식에서 함께 사용되는 메소드이며 replace 함수는 String 메소드 중 하나
RegExp
Method | Description |
exec | 매칭된 문자열이 있다면 매칭된 값의 배열을 리턴하고, 매칭된 문자열이 없다면 null을 리턴 |
test | 매칭된 문자열이 있다면 ture를 리턴하고, 매칭된 문자열이 없다면 false를 리턴 |
String
Method | Description |
match | 매칭된 문자열이 있다면 매칭된 값의 배열을 리턴하고, 매칭된 문자열이 없다면 null을 리턴 |
search | 매칭된 문자열이 있다면 매칭된 문자열의 인덱스를 리턴하고, 매칭된 문자열이 없다면 -1를 리턴 |
replace | 매칭된 문자열을 찾아 매칭된 문자열을 변경하는 메소드 |
split | 매칭된 문자열을 찾아 그 문자열을 기준으로 문자열을 나누는 메소드 |
replace()
String 메서드의 함수 중 문자열 데이터의 특정 문자를 변경하거나 제거하는데 사용할 수 있는 replace 함수로 데이터를 가공해보고자 함. 기본 형태는 아래와 같으며 첫번째 인자로 찾을 대상 문자열(a)을 입력하고 두번째 인자로 변경할 문자열(b)을 입력하면 변경된 결과를 확인할 수 있음.
replace(/대상 문자열/, "변경후 문자열")
let str = "a*b?c.d";
console.log(str.replace(/a/, "b") // "b*b?c.d"
특수문자 이스케이프
첫번째 인자로 들어가는 정규식 문자열은 특수문자를 포함할 수 있음. 이 때 몇몇 특수문자들은 아래에서 알아볼 바와 같이 특수한 용도로 사용되는 예약어이기 때문에, 백슬래시(\)를 문자 앞에 붙여줌으로써 이용해 문자 그대로 해석되어야 함을 명시.
let str = "aaaaa*a";
console.log(str.replace(/a*/, "b")); //"a*b"
console.log(str.replace(/a\*/, "b")); //"aaaaba"
백슬래시를 달아주지 않은 'a*'에서 *은 특수기호로 인식되어 연속된 a를 b로 치환하였으나 두번째 코드에서는 *앞에 백슬래시를 달아주어 일반 문자열로 인식시켜 'a*'을 b로 치환함.
단순문자 이스케이프
단순문자열에서 검색 범위를 확장하기 위해 쓸 수 있는 특수문자에는 '\b', '\n', '\d', '\f', '\r' 등 백슬래시(\)와 알파벳의 조합으로 이루어 진 것들이 있음. 단순문자 앞에 백슬래시를 써줌으로써 해당 문자가 단순문자가 아니라 특수문자로 해석해야함을 명시함.
let str = "ada12345";
console.log(str.replace(/ad/, "b")) // "ba12345"
console.log(str.replace(/a\d/, "b")) // "adb2345"
첫번째 코드에서는 'd'를 단순문자로 인식하여 'ad'라는 문자열을 b로 치환하였고 두번째 코드에서는 'd'앞에 이스케이프 코드를 달아줌으로써 정수라는 새로운 의미를 갖게 됨. 그래서 'a(정수)' 형식인 'a1'이 b로 치환됨.
플래그
replace(/대상 문자열/플래그, "변경후 문자열")
JavaScript에서는 정규식을 생성할 때 고급 검색을 위한 옵션을 설정할 수 있도록 플래그를 지원. replace함수 기준으로 대상문자열을 나타내는 정규식의 역슬래시 다음 위치하는데 주로 쓰는 g와 i의 기능은 아래와 같음.
Flag | Description |
g | 전역 검색 |
i | 대소문자 구별 없이 검색 |
플래그 활용
let str = "Aaaaaa";
//1
console.log(str.replace(/a/, "b")); //"Abaaaa"
//2
console.log(str.replace(/a/g, "b")); //"Abbbbb"
//3
console.log(str.replace(/a/i, "b")); //"baaaaa"
//4
console.log(str.replace(/a/gi, "b")); //"bbbbbb"
1번 코드에서는 별도 플래그 없이 첫번째로 발견되는 소문자 a를 b로 바꾸어주었음
2번코드에서는 전역검색 기능인 'g'플래그가 추가되어 문자열 전체의 소문자a를 b로 바꾸어줌
3번코드에서는 'i'플래그로 대문자임에도 구분없이 첫번째 A를 b로 치환하였고
4번코드에서는 두 플래그 모두 사용하여 대소문자 구분 없이 문자열 전역의 A(a)를 b로 바꾸어주었음
참고
'BACK END > NODE.JS' 카테고리의 다른 글
MariaDB Cannot enqueue Query after fatal error.(진행 중) (0) | 2022.03.17 |
---|---|
node-cron을 활용한 스케쥴링 (0) | 2022.03.17 |
cross-env (0) | 2022.03.17 |
Bcrypt 암호화 (0) | 2022.03.17 |
REST 미지원 메서드 처리 (0) | 2022.03.17 |