From f32075e9d131914cd46dc1b7600e3b6809d03f60 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 17:41:42 +0900 Subject: [PATCH 01/15] =?UTF-8?q?docs(readme):=20=EC=9A=94=EA=B5=AC=20?= =?UTF-8?q?=EC=82=AC=ED=95=AD=20=EB=B0=8F=20=EA=B5=AC=ED=98=84=ED=95=A0=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 13420b29..f546bfd2 100644 --- a/README.md +++ b/README.md @@ -1 +1,64 @@ -# javascript-calculator-precourse \ No newline at end of file +# 문자열 덧셈 계산기 + +## 기능 요구 사항 + +입력한 문자열에서 숫자를 추출하여 더하는 계산기를 구현한다. + +- 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환한다. + - 예: "" => 0, "1,2" => 3, "1,2,3" => 6, "1,2:3" => 6 +- 앞의 기본 구분자(쉼표, 콜론) 외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 "//"와 "\n" 사이에 위치하는 문자를 커스텀 구분자로 사용한다. + - 예를 들어 "//;\n1;2;3"과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다. +- 사용자가 잘못된 값을 입력할 경우 "[ERROR]"로 시작하는 메시지와 함께 Error를 발생시킨 후 애플리케이션은 종료되어야 한다. + +## 입출력 요구 사항 + +#### 입력 + +- 구분자와 양수로 구성된 문자열 + +#### 출력 + +- 덧셈 결과 + +``` +결과 : 6 +``` + +#### 실행 결과 예시 + +``` +덧셈할 문자열을 입력해 주세요. +1,2:3 +결과 : 6 +``` + +## 프로그래밍 요구 사항 + +- Node.js 22.19.0 버전에서 실행 가능해야 한다. +- 프로그램 실행의 시작점은 `App.js`의 `run()`이다. +- `package.json` 파일은 변경할 수 없으며, 제공된 라이브러리와 스타일 라이브러리 이외의 외부 라이브러리는 사용하지 않는다. +- 프로그램 종료 시 `process.exit()`를 호출하지 않는다. +- 프로그래밍 요구 사항에서 달리 명시하지 않는 한 파일, 패키지 등의 이름을 바꾸거나 이동하지 않는다. +- 자바스크립트 코드 컨벤션을 지키면서 프로그래밍한다. + - 기본적으로 [JavaScript Style Guide](https://github.com/woowacourse/woowacourse-docs/tree/main/styleguide/javascript)를 원칙으로 한다. + +### 라이브러리 + +- `@woowacourse/mission-utils`에서 제공하는 `Console` API를 사용하여 구현해야 한다. +- 사용자의 값을 입력 및 출력하려면 `Console.readLineAsync()`와 `Console.print()`를 활용한다. + +## 구현할 기능 + +1. 문자열 입력 +2. 쉼표(,), 콜론(:) 구분자를 기준으로 숫자 분리 +3. 결과 반환 +4. 커스텀 구분자 추가 +5. 예외 처리 + +- 빈 문자열을 입력한 경우 +- 음수가 포함된 경우 +- 지정된 구분자 외에 다른 문자가 포함된 경우 + - 공백 + - 문자 + - 기호 +- 커스텀 구분자에 2개 이상의 문자가 포함된 경우 From f9efa0c4b1e410d360eccffa000e8b67ed99bc18 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 18:24:30 +0900 Subject: [PATCH 02/15] =?UTF-8?q?feat(app):=20=EB=AC=B8=EC=9E=90=EC=97=B4?= =?UTF-8?q?=20=EC=9E=85=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/App.js b/src/App.js index 091aa0a5..24b8eff4 100644 --- a/src/App.js +++ b/src/App.js @@ -1,5 +1,12 @@ +import { Console } from "@woowacourse/mission-utils"; + class App { - async run() {} + async run() { + /* 문자열 입력 */ + const input = await Console.readLineAsync( + "덧셈할 문자열을 입력해 주세요.\n" + ); + } } export default App; From b43149b90f3c06b28e3d009aa9bc3f899b1bf7df Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 18:43:09 +0900 Subject: [PATCH 03/15] =?UTF-8?q?feat(app):=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=EA=B5=AC=EB=B6=84=EC=9E=90=20=EA=B8=B0=EC=A4=80=20=EC=88=AB?= =?UTF-8?q?=EC=9E=90=20=EB=B6=84=EB=A6=AC=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/App.js b/src/App.js index 24b8eff4..133b16b5 100644 --- a/src/App.js +++ b/src/App.js @@ -6,6 +6,10 @@ class App { const input = await Console.readLineAsync( "덧셈할 문자열을 입력해 주세요.\n" ); + + /* 숫자 분리 */ + let number = input.split(/,|:/); + number = number.map((num) => +num); } } From 8b405c16aebcae904374d564b32ff83eb21e2603 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 18:49:41 +0900 Subject: [PATCH 04/15] =?UTF-8?q?feat(app):=20=EA=B3=84=EC=82=B0=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B2=B0=EA=B3=BC=20=EB=B0=98=ED=99=98=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/App.js b/src/App.js index 133b16b5..527c1e62 100644 --- a/src/App.js +++ b/src/App.js @@ -10,6 +10,10 @@ class App { /* 숫자 분리 */ let number = input.split(/,|:/); number = number.map((num) => +num); + + /* 계산 및 결과 반환 */ + let answer = number.reduce((sum, num) => (sum += num)); + Console.print(`결과 : ${answer}`); } } From 8edb83c1968b9d3272a3d27c9e6fd13236a7dbdb Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 19:32:38 +0900 Subject: [PATCH 05/15] =?UTF-8?q?feat(app):=20=EC=BB=A4=EC=8A=A4=ED=85=80?= =?UTF-8?q?=20=EA=B5=AC=EB=B6=84=EC=9E=90=20=EC=B6=94=EA=B0=80=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/App.js b/src/App.js index 527c1e62..871ecf0e 100644 --- a/src/App.js +++ b/src/App.js @@ -3,12 +3,20 @@ import { Console } from "@woowacourse/mission-utils"; class App { async run() { /* 문자열 입력 */ - const input = await Console.readLineAsync( + let input = await Console.readLineAsync( "덧셈할 문자열을 입력해 주세요.\n" ); + /* 커스텀 구분자 추가 */ + let custom = ""; + if (input.slice(0, 2) === "//" && input.slice(3, 5) === "\\n") { + custom = input[2]; + input = input.slice(5); + } + /* 숫자 분리 */ - let number = input.split(/,|:/); + let delimiter = new RegExp(`,|:|${custom}`); + let number = input.split(delimiter); number = number.map((num) => +num); /* 계산 및 결과 반환 */ From 5f80ed4b76db9eeb35aca5c14a93f21fb5ce99bb Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 19:48:06 +0900 Subject: [PATCH 06/15] =?UTF-8?q?feat(app):=20=EB=B9=88=20=EB=AC=B8?= =?UTF-8?q?=EC=9E=90=EC=97=B4=EC=9D=84=20=EC=9E=85=EB=A0=A5=ED=95=9C=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EC=98=88=EC=99=B8=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/App.js b/src/App.js index 871ecf0e..8ce3c89e 100644 --- a/src/App.js +++ b/src/App.js @@ -7,6 +7,12 @@ class App { "덧셈할 문자열을 입력해 주세요.\n" ); + /* 예외처리 1 - 빈 문자열을 입력한 경우 */ + if (input === "") { + Console.print("결과 : 0"); + return; + } + /* 커스텀 구분자 추가 */ let custom = ""; if (input.slice(0, 2) === "//" && input.slice(3, 5) === "\\n") { From 0f2a5fd5bf03d3d41dd61d8a00ef217a5c957959 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 19:48:55 +0900 Subject: [PATCH 07/15] =?UTF-8?q?docs(readme):=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EB=B0=8F=20=EC=98=88=EC=99=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index f546bfd2..eacac04a 100644 --- a/README.md +++ b/README.md @@ -51,12 +51,11 @@ 1. 문자열 입력 2. 쉼표(,), 콜론(:) 구분자를 기준으로 숫자 분리 -3. 결과 반환 +3. 계산 및 결과 반환 4. 커스텀 구분자 추가 5. 예외 처리 - 빈 문자열을 입력한 경우 -- 음수가 포함된 경우 - 지정된 구분자 외에 다른 문자가 포함된 경우 - 공백 - 문자 From e0b82655e6ed7c6f15070a88a593843400eada82 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 20:08:38 +0900 Subject: [PATCH 08/15] =?UTF-8?q?fix(app):=20=EC=BB=A4=EC=8A=A4=ED=85=80?= =?UTF-8?q?=20=EA=B5=AC=EB=B6=84=EC=9E=90=20=EC=B6=94=EA=B0=80=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/App.js b/src/App.js index 8ce3c89e..be63f98d 100644 --- a/src/App.js +++ b/src/App.js @@ -16,12 +16,12 @@ class App { /* 커스텀 구분자 추가 */ let custom = ""; if (input.slice(0, 2) === "//" && input.slice(3, 5) === "\\n") { - custom = input[2]; + custom = `|${input[2]}`; input = input.slice(5); } /* 숫자 분리 */ - let delimiter = new RegExp(`,|:|${custom}`); + let delimiter = new RegExp(`,|:${custom}`); let number = input.split(delimiter); number = number.map((num) => +num); From 92e55f43b5080377577052f60c0a97e929f67e14 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 21:34:05 +0900 Subject: [PATCH 09/15] =?UTF-8?q?feat(app):=20=EC=A7=80=EC=A0=95=EB=90=9C?= =?UTF-8?q?=20=EA=B5=AC=EB=B6=84=EC=9E=90=20=EC=99=B8=EC=97=90=20=EB=8B=A4?= =?UTF-8?q?=EB=A5=B8=20=EB=AC=B8=EC=9E=90=EA=B0=80=20=ED=8F=AC=ED=95=A8?= =?UTF-8?q?=EB=90=9C=20=EA=B2=BD=EC=9A=B0=20=EC=98=88=EC=99=B8=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/App.js b/src/App.js index be63f98d..64c2e20a 100644 --- a/src/App.js +++ b/src/App.js @@ -19,9 +19,17 @@ class App { custom = `|${input[2]}`; input = input.slice(5); } + let delimiter = new RegExp(`,|:${custom}`); + + /* 예외처리 2 - 지정된 구분자 외에 다른 문자가 포함된 경우 */ + let pattern = new RegExp(`\\d,|:${custom}`); + if (!pattern.test(input)) { + throw new Error( + "[ERROR] 지정된 구분자 외에 다른 문자가 포함되어 있습니다." + ); + } /* 숫자 분리 */ - let delimiter = new RegExp(`,|:${custom}`); let number = input.split(delimiter); number = number.map((num) => +num); From 7209c7fc7ccbc50326e78b9625b4c483f0c920b7 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 22:53:33 +0900 Subject: [PATCH 10/15] =?UTF-8?q?docs(readme):=20=EC=98=88=EC=99=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index eacac04a..2a9960d4 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,8 @@ - 빈 문자열을 입력한 경우 - 지정된 구분자 외에 다른 문자가 포함된 경우 - - 공백 - - 문자 - - 기호 -- 커스텀 구분자에 2개 이상의 문자가 포함된 경우 +- 커스텀 구분자 지정이 잘못된 경우 + - 맨 앞에 작성되지 않은 경우 + - 구분자가 없거나 두 개 이상 작성된 경우 + - 구분자에 (,)나 (:)가 작성된 경우 +- 숫자에 0을 입력한 경우 From 33fa7a3d780babefca1fcad314c5e7b2d5053850 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 22:59:14 +0900 Subject: [PATCH 11/15] =?UTF-8?q?feat(app):=20=EC=BB=A4=EC=8A=A4=ED=85=80?= =?UTF-8?q?=20=EA=B5=AC=EB=B6=84=EC=9E=90=20=EC=A7=80=EC=A0=95=EC=9D=B4=20?= =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=9C=20=EA=B2=BD=EC=9A=B0=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/App.js b/src/App.js index 64c2e20a..72bc5563 100644 --- a/src/App.js +++ b/src/App.js @@ -7,7 +7,7 @@ class App { "덧셈할 문자열을 입력해 주세요.\n" ); - /* 예외처리 1 - 빈 문자열을 입력한 경우 */ + // 예외처리 - 빈 문자열을 입력한 경우 if (input === "") { Console.print("결과 : 0"); return; @@ -15,13 +15,32 @@ class App { /* 커스텀 구분자 추가 */ let custom = ""; - if (input.slice(0, 2) === "//" && input.slice(3, 5) === "\\n") { + let customForm = input.match(/\/\/.*\\n/); + + if (customForm) { + // 예외처리 - 커스텀 구분자 지정이 잘못된 경우 + if (customForm.index !== 0) { + throw new Error( + "[ERROR] 커스텀 구분자 지정 형식은 맨 앞에 작성해야 합니다." + ); + } + if (customForm[0].length !== 5) { + throw new Error( + "[ERROR] 커스텀 구분자는 한 개 작성해야 합니다." + ); + } + if (customForm[0][2] === "," || customForm[0][2] === ":") { + throw new Error( + "[ERROR] 기본 구분자는 커스텀 지정자에 작성할 수 없습니다." + ); + } + custom = `|${input[2]}`; input = input.slice(5); } - let delimiter = new RegExp(`,|:${custom}`); - /* 예외처리 2 - 지정된 구분자 외에 다른 문자가 포함된 경우 */ + // 예외처리 - 지정된 구분자 외에 다른 문자가 포함된 경우 + let delimiter = new RegExp(`,|:${custom}`); let pattern = new RegExp(`\\d,|:${custom}`); if (!pattern.test(input)) { throw new Error( From c9a55efca6ed7d6a985afb4cb7ae672cae0fb49e Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 23:03:43 +0900 Subject: [PATCH 12/15] =?UTF-8?q?feat(app):=20=EC=88=AB=EC=9E=90=EC=97=90?= =?UTF-8?q?=200=EC=9D=84=20=EC=9E=85=EB=A0=A5=ED=95=9C=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EC=98=88=EC=99=B8=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/App.js b/src/App.js index 72bc5563..0ad4d112 100644 --- a/src/App.js +++ b/src/App.js @@ -50,10 +50,15 @@ class App { /* 숫자 분리 */ let number = input.split(delimiter); + + // 예외처리 - 숫자에 0을 입력한 경우 + if (number.includes("0")) { + throw new Error("[ERROR] 양수만 입력할 수 있습니다."); + } number = number.map((num) => +num); /* 계산 및 결과 반환 */ - let answer = number.reduce((sum, num) => (sum += num)); + let answer = number.reduce((sum, num) => (sum += +num)); Console.print(`결과 : ${answer}`); } } From 4d8e1b591934e5fd7b9be73e25a496aff1b9d835 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 23:13:02 +0900 Subject: [PATCH 13/15] =?UTF-8?q?refactor(app):=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC=20=EB=B0=8F=20=EB=B0=98=EB=B3=B5=EB=AC=B8=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/App.js b/src/App.js index 0ad4d112..6c613f3e 100644 --- a/src/App.js +++ b/src/App.js @@ -9,8 +9,7 @@ class App { // 예외처리 - 빈 문자열을 입력한 경우 if (input === "") { - Console.print("결과 : 0"); - return; + return Console.print("결과 : 0"); } /* 커스텀 구분자 추가 */ @@ -40,7 +39,6 @@ class App { } // 예외처리 - 지정된 구분자 외에 다른 문자가 포함된 경우 - let delimiter = new RegExp(`,|:${custom}`); let pattern = new RegExp(`\\d,|:${custom}`); if (!pattern.test(input)) { throw new Error( @@ -49,16 +47,16 @@ class App { } /* 숫자 분리 */ + let delimiter = new RegExp(`,|:${custom}`); let number = input.split(delimiter); // 예외처리 - 숫자에 0을 입력한 경우 if (number.includes("0")) { throw new Error("[ERROR] 양수만 입력할 수 있습니다."); } - number = number.map((num) => +num); /* 계산 및 결과 반환 */ - let answer = number.reduce((sum, num) => (sum += +num)); + let answer = number.reduce((sum, num) => (sum += +num), 0); Console.print(`결과 : ${answer}`); } } From 6a1908d0289dc63c0fd814c6914b91814efb1226 Mon Sep 17 00:00:00 2001 From: Hayoung Kang <85282786+Hayoung0708@users.noreply.github.com> Date: Mon, 20 Oct 2025 23:15:25 +0900 Subject: [PATCH 14/15] =?UTF-8?q?docs(readme):=20=EC=B5=9C=EC=A2=85=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2a9960d4..3477ace4 100644 --- a/README.md +++ b/README.md @@ -47,13 +47,13 @@ - `@woowacourse/mission-utils`에서 제공하는 `Console` API를 사용하여 구현해야 한다. - 사용자의 값을 입력 및 출력하려면 `Console.readLineAsync()`와 `Console.print()`를 활용한다. -## 구현할 기능 +## 구현한 기능 -1. 문자열 입력 -2. 쉼표(,), 콜론(:) 구분자를 기준으로 숫자 분리 -3. 계산 및 결과 반환 -4. 커스텀 구분자 추가 -5. 예외 처리 +#### 1. 문자열 입력 +#### 2. 쉼표(,), 콜론(:) 구분자를 기준으로 숫자 분리 +#### 3. 계산 및 결과 반환 +#### 4. 커스텀 구분자 추가 +#### 5. 예외 처리 - 빈 문자열을 입력한 경우 - 지정된 구분자 외에 다른 문자가 포함된 경우 From da95c91570ad0475933df1f31f15b636b3aa67b5 Mon Sep 17 00:00:00 2001 From: Hayoung Kang Date: Mon, 20 Oct 2025 23:45:42 +0900 Subject: [PATCH 15/15] =?UTF-8?q?fix(app):=20=EC=A0=95=EA=B7=9C=EC=8B=9D?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=88=AB=EC=9E=90=EA=B0=80=20=ED=8F=AC?= =?UTF-8?q?=ED=95=A8=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.js b/src/App.js index 6c613f3e..97f5d6f7 100644 --- a/src/App.js +++ b/src/App.js @@ -39,7 +39,7 @@ class App { } // 예외처리 - 지정된 구분자 외에 다른 문자가 포함된 경우 - let pattern = new RegExp(`\\d,|:${custom}`); + let pattern = new RegExp(`^[0-9,|:${custom}]+$`); if (!pattern.test(input)) { throw new Error( "[ERROR] 지정된 구분자 외에 다른 문자가 포함되어 있습니다."