트러블슈팅 : 문자열 입력에서 `\n` 인식 문제

JS K·2025년 10월 19일

😢 현상

콘솔에서 다음과 같이 입력했을 때,

//;\n1;2;3

정규식 /^\/\/.*\n/으로 테스트하면 false,
/^\/\/.*\\n/으로 테스트하면 true가 된다.

즉, \n을 입력했는데 줄바꿈으로 인식되지 않고,
문자 두 개(\ + n)로 처리된다.





🧠 원인

  • 콘솔 입력은 한 줄 단위(line buffered) 로 동작한다.
  • 사용자가 입력한 \n은 문자열 리터럴 안의 개행이 아니라, 단순히 문자 두 개로 전달된다.
  • 따라서 실제로 전달된 문자열은 "//;\\n1;2;3" 형태이며, 줄바꿈 문자가 포함되어 있지 않다.

코드 안에서 "//;\n1;2;3" 처럼 작성한 경우와
콘솔에서 //;\n1;2;3을 직접 입력한 경우는 완전히 다르다.





🛠️ 해결 방법

✅ 1. 입력 정규화 (추천)

콘솔에서 들어온 \n 문자를 실제 줄바꿈으로 바꿔준다.

input = input.replace(/\n/g, '\n');

이후에는 정규식에서 그냥 \n만 검사하면 된다.


✅ 2. 정규식으로 둘 다 허용

const pattern = /^\/\/.*(?:\r?\n|\\n)/;

→ 실제 줄바꿈(\n)과 문자 \n 모두 인식 가능.


✅ 3. 진짜 줄바꿈을 입력으로 보내기

콘솔 대신 파일 또는 파이프 입력을 사용한다.

PowerShell

@"
//;
1;2;3
"@ | node app.js

Bash (Git Bash, macOS 등)

printf "//;\n1;2;3" | node app.js

또는

cat <<EOF | node app.js
//;
1;2;3
EOF





🧾 요약

콘솔은 `\n`을 해석하지 않는다. 
→ 코드에서 바꿔주거나 파일 입력으로 해결!
profile
1.01^365

0개의 댓글