🗃️javascript/프로그래머스

숨어있는 숫자의 덧셈 (1)(Lv.0)(정규식 대략 정리)

하얀성 2022. 12. 29. 20:11
<문제 설명>

 

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.


제한사항
  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.

입출력 예my_stringresult
"aAb1B2cC34oOp" 10
"1a2b3c4d123" 16

입출력 예 설명

입출력 예 #1

  • "aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다. 따라서 1 + 2 + 3 + 4 = 10 을 return합니다.

입출력 예 #2

  • "1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.

유의사항
  • 연속된 숫자도 각각 한 자리 숫자로 취급합니다.

<제출 답안>

 

function solution(my_string) {
    return my_string.split("").map((x) => Number(x)).filter((x) => 

Number.isInteger(x)).reduce((acc,b) => acc + b)

풀긴 풀었음.

답 쓴거 보니  array 함수 배운거는 거의 다 갖다 붙혀놨네 ㅋㅋㅋㅋ


근데 더 쉬운 방법이 있음. 숫자정규식. (이 정규식은 문자열 안을 모두 검색해서 0-9 까지의 숫자를 데려와서 배열로 만드는 것임)

replace는 불러온 자리를, ''로 바꾸는 메서드이고.

 

function solution(my_string) {
    const answer = my_string.replace(/[^0-9]/g, '')
                            .split('')
                            .reduce((acc, curr) => acc + Number(curr), 0);
    return answer;
}

 


<참고>

 

정규식이란?

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. JavaScript에서는 정규 표현식도 객체로서, RegExp exec() test() 메서드를 사용할 수 있습니다. String match(), matchAll() (en-US), replace(), replaceAll() (en-US), search(), split() 메서드와도 함께 사용할 수 있습니다. 이 장에서는 JavaScript의 정규 표현식을 설명합니다.

 

정규식 구성

정규식 구성 코드는 다음과 같다.

슬래쉬 문자 두개 사이로 정규식 기호가 들어가는 형태이다. 뒤의 i 는 정규식 플래그이다.

정규식 메서드

위의 정규표현식을 가지고 이메일이나 전화번호 매칭 필터링을 하기위해선 자바스크립트 정규식 메서드를 이용하여 패턴을 검사하고, 매칭되는 문자열을 추출, 변환한다.

Flag Meaning Description
i Ignore Case 대소문자를 구별하지 않고 검색한다.
g Global 문자열 내의 모든 패턴을 검색한다.
m Multi Line 문자열의 행이 바뀌더라도 검색을 계속한다.
s .​(모든 문자 정규식)이 개행 문자 \n도 포함하도록
u unicode 유니코드 전체를 지원
y sticky 문자 내 특정 위치에서 검색을 진행하는 ‘sticky’ 모드를 활성화

 

g : 전역 검색

  • 전역 검색 플래그(g)가 없는 경우에는 최초 검색 결과 한번만 반환하는 반면,
  • 전역 검색 플래그(g)가 있는 경우에는 모든 검색 결과를 배열로 반환

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

정규식 특정 문자 숫자 매칭 패턴

 

패턴 의미
a-zA-Z 영어알파벳(-으로 범위 지정)
ㄱ-ㅎ가-힣 한글 문자(-으로 범위 지정)
0-9 숫자(-으로 범위 지정)
. 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두)
단, 줄바꿈 X
\d 숫자
\D 숫자가 아닌 것
\w 밑줄 문자를 포함한 영숫자 문자에 대응
[A-Za-z0-9_] 와 동일
\W \w 가 아닌 것
\s space 공백
\S space 공백이 아닌 것

 

출처: https://inpa.tistory.com/entry/JS-%F0%9F%93%9A-%EC%A0%95%EA%B7%9C%EC%8B%9D-RegExp-%EB%88%84%EA%B5%AC%EB%82%98-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%A0%95%EB%A6%AC

 

[JS] 📚 정규표현식(RegExp) - 이해하기 쉽게 정리 + 응용 예제

정규표현식(Regular Expression) 정규식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용된다. 대표적으로 입력칸에 전화번호나 이메일을 입력하라고 했을때 옳지 않은

inpa.tistory.com

 

윗 출처 사이트 같은 T스토리 맞나?? ㅋㅋㅋㅋ 너무 잘꾸미고 너무 상세히 잘 정리해놨으니 꼭. 들어가보길 바란다.