프로그래머스 모음 제거 자바스크립트 | String.prototype.replace() | RegExp 정규표현식

Chaeyeon Lee·2023년 5월 20일
0

🔅 1. 아이디어

떠오르지 않아 replace를 찾아 보았다^^;

🧑‍💻 2. 내 코드

function solution(my_string) {
    return my_string.replace(/['a','e','i','o','u']/g,'');
}

🐣 3. 개념

📌 String.prototype.replace()

위 메서드는 어떤 패턴에 일치하는 부분을 교체하여 새로운 문자열로 반환한다. 원본 문자열은 변경되지 않는다.

패턴은 문자열이나 정규식이 될 수 있다. 패턴이 문자열인 경우, 첫 번째 문자열만 치환되고, 원래 문자열은 변경되지 않는다.

const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';
console.log(p.replace('dog', 'monkey'));
//"The quick brown fox jumps over the lazy monkey. If the dog reacted, was it really lazy?"

const regex = /Dog/i;
console.log(p.replace(regex, 'ferret'));
//"The quick brown fox jumps over the lazy ferret. If the dog reacted, was it really lazy?"

아래는 replace()를 활용하여 모음 제거 문제를 푼 코드!

function solution(my_string) {
    return my_string.replace(/[aeiou]/g, '');
}

사실상... 정규표현식과 함께 써야 유용한 메서드인 것 같다.

📌 정규 표현식

특정 패턴의 문자열을 찾기 위한 표현 방식이다.
어떤 블로그에 정리된 예시를 들고 오겠읍니다. 개인 정리용이라...출처는 아래에!!

ex) "대나무 빨대 a급 제품은 10개 남아있습니다. 010-1111-2222 로 Call Me~!"
(1) /대/ : '대'를 '하나'만 찾는다.
=> 나무 빨대 a급 제품은 10개 남아있습니다. 010-1111-2222 로 Call Me~!
(2) /대/g : '대'를 '모두' 찾는다
=> 나무 빨 a급 제품은 10개 남아있습니다. 010-1111-2222 로 Call Me~!
g(global) 플래그를 뒤에 붙인걸 기억!
(3) /대나무 빨대/ : '대나무 빨대'를 찾는다.
=> 대나무 빨대 a급 제품은 10개 남아있습니다. 010-1111-2222 로 Call Me~!
(4) /[대a0]/g : "대", "a", 0 중에 하나를 모두 찾는다.
=> 나무 빨 a 급 제품은 1 0 개 남아있습니다. 0 1 0-1111-2222 로 C a ll Me~!
대괄호[]는 OR의 기능을 한다.
(5) /[0-9]/g : '숫자0~9'를 모두 찾는다.
=> 대나무 빨대 a급 제품은 10 개 남아있습니다. 010-1111-2222 로 Call Me~!
(6) /[a-zA-Z]/g : '영어알파벳 대문자/소문자'를 모두 찾는다.
=> 대나무 빨대 a 급 제품은 10개 남아있습니다. 010-1111-2222 로 Call Me~!
(7) /[^0-9]/g : '숫자0~9'가 아닌 것을 모두 찾는다.
=> 대나무 빨대 a급 제품은 10 개 남아있습니다. 010-1111-2222 로 Call Me~!
대괄호[] 안에서 앞에 ^를 쓰면, 부정(Not)의 기능을 합니다.


🔸 pattern

/pattern/flag
패턴의미
a-zA-Z영어알파벳(-으로 범위 지정)
ㄱ-ㅎ가-힣한글 문자(-으로 범위 지정)
0-9숫자(-으로 범위 지정)
.모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두! 단, 줄바꿈X)
\d숫자
\D숫자가 아닌 것
\w영어 알파벳, 숫자, 언더스코어
\W/w 가 아닌 것
\sspace 공백
\Sspace 공백이 아닌 것
\특수기호특수기호

기호의미
[ ]괄호안의 문자들 중 하나
[^문자]괄호안의 문자를 제외한 것
^문자열특정 문자열로 시작(괄호 없음 주의!)
문자열$특정 문자열로 끝남
( )그룹 검색 및 분류(match메서드에서 그룹별로 묶어줌)
(?: 패턴)그룹 검색(분류X)
\b단어의 처음/끝
\B단어의 처음/끝이 아님

🔸 flag

동시에 여러 개 사용할 수 있다. ex) gi, gm 등

플래그의미
gGlobal: 모든 문자 검색(안 쓰면 매칭되는 첫 문자만 검색)
iIgnore Case: 대소문자 구분 안함
mMulti line: 여러 행의 문자열에 대해 검색

🔸 정규식 표현 주요 메서드

메서드의미
("문자열").match(/정규표현식/플래그)"문자열"에서 "정규표현식"에 매칭되는 항목들을 배열로 반환
("문자열").replace(/정규표현식/, "대체문자열")"정규표현식"에 매칭되는 항목을 "대체문자열"로 변환
("문자열").split(정규표현식)"문자열"을 "정규표현식"에 매칭되는 항목으로 쪼개어 배열로 반환
(정규표현식).test("문자열")"문자열"이 "정규표현식"과 매칭되면 true, 아니면 false반환
(정규표현식).exec("문자열")match메서드와 유사(단, 무조건 첫번째 매칭 결과만 반환)

정규식 표현 미친놈...
이걸 정녕 외워야 하나.....
이것보다 더 많은데, 출처에 더 많고 자세한 정보들이 써 있다. 당장에 필요한 것만 긁어 가져옴


📌 RegExp

RegExp 생성자는 패턴을 사용해 텍스트를 판별할 때 사용.
RegExp 객체는 리터럴 표기법과 생성자로써 생성할 수 있다.

/ab+c/i
new RegExp(/ab+c/, 'i') // 리터럴
new RegExp('ab+c', 'i') // 생성자


출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/replace
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_expressions
https://curryyou.tistory.com/234

profile
프론트엔드 개발자 지망생

0개의 댓글