콘솔에서 다음과 같이 입력했을 때,
//;\n1;2;3
정규식 /^\/\/.*\n/으로 테스트하면 false,
/^\/\/.*\\n/으로 테스트하면 true가 된다.
즉, \n을 입력했는데 줄바꿈으로 인식되지 않고,
문자 두 개(\ + n)로 처리된다.
\n은 문자열 리터럴 안의 개행이 아니라, 단순히 문자 두 개로 전달된다."//;\\n1;2;3" 형태이며, 줄바꿈 문자가 포함되어 있지 않다.코드 안에서
"//;\n1;2;3"처럼 작성한 경우와
콘솔에서//;\n1;2;3을 직접 입력한 경우는 완전히 다르다.
콘솔에서 들어온 \n 문자를 실제 줄바꿈으로 바꿔준다.
input = input.replace(/\n/g, '\n');
이후에는 정규식에서 그냥 \n만 검사하면 된다.
const pattern = /^\/\/.*(?:\r?\n|\\n)/;
→ 실제 줄바꿈(\n)과 문자 \n 모두 인식 가능.
콘솔 대신 파일 또는 파이프 입력을 사용한다.
@"
//;
1;2;3
"@ | node app.js
printf "//;\n1;2;3" | node app.js
또는
cat <<EOF | node app.js
//;
1;2;3
EOF
콘솔은 `\n`을 해석하지 않는다.
→ 코드에서 바꿔주거나 파일 입력으로 해결!