떠오르지 않아 replace를 찾아 보았다^^;
function solution(my_string) {
return my_string.replace(/['a','e','i','o','u']/g,'');
}
위 메서드는 어떤 패턴에 일치하는 부분을 교체하여 새로운 문자열로 반환한다. 원본 문자열은 변경되지 않는다.
패턴은 문자열이나 정규식이 될 수 있다. 패턴이 문자열인 경우, 첫 번째 문자열만 치환되고, 원래 문자열은 변경되지 않는다.
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/flag
패턴 | 의미 |
---|---|
a-zA-Z | 영어알파벳(-으로 범위 지정) |
ㄱ-ㅎ가-힣 | 한글 문자(-으로 범위 지정) |
0-9 | 숫자(-으로 범위 지정) |
. | 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두! 단, 줄바꿈X) |
\d | 숫자 |
\D | 숫자가 아닌 것 |
\w | 영어 알파벳, 숫자, 언더스코어 |
\W | /w 가 아닌 것 |
\s | space 공백 |
\S | space 공백이 아닌 것 |
\특수기호 | 특수기호 |
기호 | 의미 |
---|---|
[ ] | 괄호안의 문자들 중 하나 |
[^문자] | 괄호안의 문자를 제외한 것 |
^문자열 | 특정 문자열로 시작(괄호 없음 주의!) |
문자열$ | 특정 문자열로 끝남 |
( ) | 그룹 검색 및 분류(match메서드에서 그룹별로 묶어줌) |
(?: 패턴) | 그룹 검색(분류X) |
\b | 단어의 처음/끝 |
\B | 단어의 처음/끝이 아님 |
동시에 여러 개 사용할 수 있다. ex) gi, gm 등
플래그 | 의미 |
---|---|
g | Global: 모든 문자 검색(안 쓰면 매칭되는 첫 문자만 검색) |
i | Ignore Case: 대소문자 구분 안함 |
m | Multi line: 여러 행의 문자열에 대해 검색 |
메서드 | 의미 |
---|---|
("문자열").match(/정규표현식/플래그) | "문자열"에서 "정규표현식"에 매칭되는 항목들을 배열로 반환 |
("문자열").replace(/정규표현식/, "대체문자열") | "정규표현식"에 매칭되는 항목을 "대체문자열"로 변환 |
("문자열").split(정규표현식) | "문자열"을 "정규표현식"에 매칭되는 항목으로 쪼개어 배열로 반환 |
(정규표현식).test("문자열") | "문자열"이 "정규표현식"과 매칭되면 true, 아니면 false반환 |
(정규표현식).exec("문자열") | match메서드와 유사(단, 무조건 첫번째 매칭 결과만 반환) |
정규식 표현 미친놈...
이걸 정녕 외워야 하나.....
이것보다 더 많은데, 출처에 더 많고 자세한 정보들이 써 있다. 당장에 필요한 것만 긁어 가져옴
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