📝 TIL

[TIL] JS 정규표현식, 생성자 함수, 프로토타입

오늘 ONEUL 2022. 4. 21. 23:42

✍ Today I Learned

  • [정규 표현식 Regular Expression]
    • 정규 표현식이란? 특정한 규칙을 가지는 문자열의 집합을 찾아내기 위한 패턴이다. /검색패턴/플래그
    • search(/str/flag) - 해당 문자열에서 인수로 전달받은 정규 표현식과 일치하는 첫 번째 문자열의 인덱스를 반환, 찾지 못하면 -1 반환
      • indexOf()와 다른 점은? search()는 시작 위치를 지정할 수 없다 indexOf()는 정규표현식을 사용할 수 없다
    • replace(/str/flag) - 지정된 값을 다른 값으로 바꾸고 새 문자열로 반환. 첫 일치 항목만 대체하고, 대소문자를 구분한다. 정규식을 함께 사용하면 더 편리하다.
    • match(/str/flag) - 해당 문자열에서 인수로 전달받은 정규 표현식과 일치하는 문자열을 찾아서 하나의 배열로 반환
    • i - 대소문자 구별하지 않고 검색
    • g - 일치하는 모든 부분 검색
    • m - 문자열이 여러 줄이어도 그대로 검색
    • pattern.test('strValue') - 문자열에서 패턴을 검색하고 결과에 따라 true 또는 false를 반환
    • pattern.exec('strValue') - 문자열에서 지정된 패턴을 검색하고 찾은 텍스트를 객체로 반환, 없으면 null 객체 반환

[Brackets]

괄호 설명
a(b)c 전체 패턴을 검색한 후에 괄호 안에 명시된 문자열을 저장함. (ex : "abc"를 검색한 후에 b를 저장함.)
[abc] 꺾쇠 괄호([]) 안에 명시된 문자를 검색함. (ex : "abc"를 검색함.)
[0-3] 꺾쇠 괄호([]) 안에 명시된 숫자를 검색함. (ex : 0부터 3까지의 숫자를 검색함.)
[\b] 백스페이스 문자를 검색함.
{n} 앞의 문자가 정확히 n번 나타나는 경우를 검색함. n은 반드시 양의 정수이어야만 함.
{m,n} 앞의 문자가 최소 m번 이상 최대 n번 이하로 나타나는 경우를 검색함. m과 n은 반드시 양의 정수이어야만 함.

 

[Metacharacter]

특수 문자 설명
\ 역슬래시(\) 다음에 일반 문자가 나오면 이스케이프 문자로 해석하고, 특수 문자가 나오면 일반 문자로 해석함.
\d 숫자를 검색함. /[0-9]/와 같음.
\D 숫자가 아닌 문자를 검색함. /[^0-9]/와 같음
\w 언더스코어(_)를 포함한 영문자 및 숫자를 검색함. /[A-Za-z0-9_]/와 같음.
\W 언더스코어(_), 영문자, 숫자가 아닌 문자를 검색함. /[^A-Za-z0-9_]/와 같음.
\s 띄어쓰기, 탭, 줄 바꿈 문자 등의 공백 문자를 검색함.
\S 띄어쓰기, 탭, 줄 바꿈 문자 등의 공백 문자가 아닌 문자를 검색함.
\b 단어의 맨 앞이나 맨 뒤가 패턴과 일치하는지를 검색함.
\xhh 16진수 hh에 해당하는 유니코드 문자를 검색함.
\uhhhh 16진수 hhhh에 해당하는 유니코드 문자를 검색함.

 

[Quantifier]

괄호 설명
n* 바로 앞의 문자가 0번 이상 나타나는 경우를 검색함. /{0, }/와 같음.
n+ 바로 앞의 문자가 1번 이상 나타나는 경우를 검색함. /{1, }/과 같음.
n? 바로 앞의 문자가 0번 또는 1번만 나타나는 경우를 검색함. /{0,1}/과 같음.

정규 표현식에 관한 참고자료( TCP School / Dev Scroll )

  • [Object]
    • 객체를 생성할 때 가독성, 수행 속도 등의 이유로 new 키워드는 사용하지 않는 것이 좋다.
    • JSON.stringify()를 사용하면 객체나 배열을 문자열로 변환할 수 있다.
    • getter로 객체의 값에 접근하고 setter로 객체의 값을 설정할 수 있다.
    • 이렇게 하는 이유는 보다 간단한 구문을 사용할 수 있고, 더 나은 데이터 품질을 확보할 수 있기 때문이다.
  • [생성자 함수 Constructor function]
    • 생성자 함수는 재사용할 수 있는 객체 코드를 구현한다.
    • 함수 이름의 첫 글자는 대문자로 시작하고, 반드시 new 연산자를 붙여 실행한다.
    • 모든 객체는 기본적으로 constructor를 가지고 있다. 나타나 있지 않을 뿐이다.
    • 생성자 함수에 관한 참고자료
  • [프로토 타입 Prototypes]
    • 자바스크립트의 모든 객체는 프로토타입이라는 객체를 가지고 있고, 모든 객체는 그들의 프로토타입으로부터 프로퍼티와 메서드를 상속받는다.
    • 프로토타입 속성을 사용하면 생성자에 새 속성을 추가할 수 있다.
  • [Set]
    • Set의 타입은 객체이기 때문에 typeof 연산자 대신 mySet instanceof Set을 사용하면 true or false를 반환한다.