RegExp 인스턴스 생성시에는 u플래그를 사용안해도 적용이 되나요?
356
16 asked
안녕하세요 강사님!
u플래그에 대한 강의를 듣다고 예제코드를 해보는 와중에 u플래그를 사용하지 않으면 코드 포인트를 문자로 해석한다고해서 실행을 해보니 정상적으로 false를 반환을 합니다.
다만, 생성자 방식으로 const obj = new RegExp("\u{31}\u{32}") RegExp인스턴스를 생성하여
obj.test("12")를 진행하니 true가 반환됩니다. 생성자를 통한 정규표현식 검사에서는 u플래그가 없어도 코드 포인트를 문자로 매치하는게 아닌 유니코드의 코드 포인트로 변환후 매치하는게 맞나요?
Answer 2
0
유니코드 31은 1이고 유니코드 32는 2입니다. 플래그 u를 작성하면 유니코드 값을 변환합니다.
한편, 플래그를 작성하지 않으면 변환하지 않는것으로 보아집니다.
console.log("1.", /\u{31}\u{32}/u.test("12")); 유니코드로 변환하므로 12가 되어 true가 됩니다.
console.log("2.", /\u{31}\u{32}/.test("12")); 유니코드로 변환하지 않으므로 false됩니다.
const obj1 = new RegExp("\u{31}\u{32}", "u"); console.log("3.", obj1.test("12"));
const obj2 = new RegExp("\u{31}\u{32}"); console.log("4.", obj2.test("12"));
new RegExp()로 인스턴스를 생성할 때, 두 번째 파라미터에 u 플래그 작성 여부에 관계없이 첫 번째 파라미터의 패턴 형태를 분석하여, u가 작성되어 있으면 유니코드로 변환하는 것으로 보아집니다.
자바스크립트의 String 오브젝트에서 패턴(//)을 인식하면, String 오브젝트에 RegExp가 없으므로 RegExp 오브젝트로 값을 넘겨주어 처리한 후, 반환된 값을 String 오브젝트에 처리하게 됩니다만, 넘겨 줄 때 new RegExp()처럼 패턴을 체크하여 u 플래그를 넘겨 주면 좋을 텐데, 아직 이 부분까지 String 오브젝트에 반영되지 않은 것으로 생각됩니다.
한편, String 오브젝트에서 u 프래그를 임의로 넘겨 주지 않는 것이 정상일 수 있으며, RegExp 오브젝트에서 String 오브젝트에서 넘겨 주는 값을 new RepExp() 처럼 패턴을 체크하여 u 플래그를 적용하는 것도 방법일 수 있습니다.
하지만, 자바스크립트 정규 표현식은 표준이며, 오해가 발생할 것 같아 적을 수는 없지만 자바스크립트 정규 표현식을 그대로 사용하는 언어도 있습니다. 이런 어려움으로 인해 현재 방법을 취한 것으로 생각됩니다.
또한 "ABC".includes("A");를 실행하면 "ABC"가 String 타입이므로 String 인스턴스를 생성하여 includes() 메소드를 실해하는 것처럼, /\u{31}\u{32}/.test("12"))처럼 패턴이면 RegExp 인스턴스를 만들어 처리하게 되므로 이때 패턴을 분석하여 u가 작성되어 있으면 유니코드로 처러하면 편리할 것 같습니다만, u 플래그 작성만 체크한 것으로 보아 집니다.
0
약간 자문자답인데, 생성자안에 코드포인트를 넣을때 파라미터가 넘어가며 변환이 되기때문인 것 같은데 , 파라미터를 넘기는 시점에서 String.raw `\u{31}\u{32}` 이런식으로 보내면 되지 않을까 싶습니다. 맞게 생각한걸까요?
prototype의 메소드 내부에 화살표 함수가 작성된 경우
1
229
0
let 변수 호이스팅
0
381
1
[정리시간]부족하지만...
3
238
0
[제네레이터함수, yield를 활용한 무한 덧셈] 식, result += yield result를 어떻게 이해 해야할까요???
0
408
1
자바스크립트도 컴파일을 하나요?
0
626
1
틀린부분 질문드립니다
0
304
1
clear() 메소드 관련 질문
0
250
0
실행 시점
0
162
0
yield에 대해 질문이 있습니다.
0
302
2
window 오브젝트에서의 함수표현식 호출
0
279
1
Unicode 관련 정리
2
226
1
화살표 함수의 this 의 정적 스코프 참조 부분 질문드립니다.
0
205
1
선생님께서 ES5 심화과정에서 알려주신 event 처리 방법 나이스입니다!
1
214
1
안녕하세요.선생님 질문이 생겨서 글남깁니다.
0
201
1
안녕하세요.선생님 질문 있습니다.
1
262
2
Array.from()이랑 Array.of()랑 설명이 뒤바뀐 것 같아요..
0
177
1
Arrow Function 에서 Scope 관련 질문이 있습니다.
1
298
5
setPrototypeOf() 는 정의에 대해 헷갈린 점 질문 드립니다.
5
234
1
[강의자입니다] 브라우저 디버거 창의 오른쪽에 let, const 변수 표시
5
289
0
디버깅 맨 처음부터 Script에 globalLet이 설정되어있습니다.
1
243
1
강의 pdf 파일 공개 부탁드립니다
0
170
1
아 전역에 let을 선언해도 순서대로 읽는군요;;
2
240
1
Symbol.species 질문입니다.
0
420
1
글의 정리가 안되어있어 삭제했습니다.
0
163
1

