Chapter 4. JS 문자열 Part 2.

NavDevJae·2021년 2월 21일
0

JS에 다가가기~~

목록 보기
5/6
post-thumbnail

문자열 (string) 번외

  • Concatenating Strings (문자열을 이어붙인다)

    let str1 = "Very";
    let str2 = "Good";
    let str3 = "3";
    console.log(str1 + str2); // "VeryGood" 
    console.log(str3 + 7); // "37"
    str1 + str2 === str1.concat(str2) 
  • Immutability (변경 불가능한 값)

    조금 더 자세한 내용은 배열 내용을 다룰 때 자세히 알아보도록 하자!

    Primitive Data Type (원시타입) = immutable value
    ex) Boolean, null, undefined, Number, String, Symbol

    Reference Data Type (참조타입) = mutable value
    ex) array, object, function

  • 정규 표현식 (Regular Expression = Regex)

    • 정규식 선언

      let regex = /정규식/
      let regex = new RegExp("정규식")
    • flag

      플래그 = 정규식 뒤에 붙어서 사용되는 것.
      g : 전역 검색, 문자열 전체 조합을 검색.
      i : 대소문자 구분 없는 검색.

      flag = /pattern/flags // 예를들면 => /pattern/gi 
      flag = new RegExp("pattern","flags")
    • test

      test = 특정 문자열이 정규식을 만족하는지 여부 판단. Boolean 값 반환.

      let regex = /baby/
      let str = "baby"
      let result = regex.test(str); // true => 문자열 baby가 정규식을 만족하므로 true를 반환한다. 
    • replace

      replace = 정규식을 만족하는 부분을 찾으면 그 부분을 다른 텍스트로 replace한다.

      let str = "DABC"
      let regex = /[DB]/g   // g라는 flag가 있기에 문자열 전체를 검색한다. 
      let result = str.replace(regex, "A") // "AAAC" => 알파벳 D, B를 만나면 A로 변환. 
    • exec

      exec = 문자열에서 값을 찾으면 그 위치를 기억하고 있다가 그 부분에 대한 정보를 반환한다. 검색이 끝나면 null 반환.

      let str = "You are my everything."
      let regex = /[a-z]+/gi  // a-z 사이의 알파벳을 이어붙인 것  + g flag + i flag 
       while((result = regex.exec(str)) !== null) {  // 결과값이 null이 아닌 값을 반복해서 돌린다. 
         console.log(result);  //result내에 각 문자열이 배열로 담긴다. ex) result[0] = "You"
      }
      //단순히 regex.exec(str)만 적으면 exec 함수의 특성상 global flag를 붙여도 일치하는 첫번째 값만 반환한다. 
      //그러나 str.match(regex)로 적으면 match에 의해 global flag가 있을 시 전부 다 찾아준다. 
    • 대괄호 (메타 캐릭터)

      [ab] : 대괄호 안에 a, b 중 한 개의 문자라도 있다면 true
      [^ab] : 대괄호 안에 a, b 중 한 개의 문자라도 없다면 true
      [a-z] : 소문자 a에서 z까지
      [A-Z] : 대문자 A에서 Z까지
      [0-9] : 숫자 0에서 9까지
      [ㄱ-힣] : 한글 (자음포함)
      [가-힣] : 한글 (자음제외)
      \d : [0-9]와 동일 // \는 역슬래시로 작성바란다.
      \D : [^0-9]와 동일
      \w : [a-zA-Z0-9_]
      \W : [^a-zA-Z0-9_]

       regex = /[xyz]/
       "XyZ" 테스트 : false // 대소문자 구분하기에 "X","Z" 해당사항 없음.
       regex = /[xyx]/i
       "XyZ" 테스트 : true // i flag 사용하였기에 대소문자 구분없음. 
       regex = /[a-z]/ 
       "abc" 테스트 : true // a부터 z까지의 알파벳 중 하나이상이 포함되어 있음. 
       regex = /[a-zA-Z]/
       "123a" 테스트 : true // a하나가 포함되어 있음. 
       regex = /[0-9]/ 
       "abc" 테스트 : false // 0부터 9까지의 숫자가 포함되어 있지 않음. 
    • 마침표 (메타 캐릭터)

      마침표 = 모든 문자 범위의 한 글자. 스페이스나 엔터 등의 화이트스페이스도 포함.

      regex = /./
      regex.test("a") // true
      regex.test(" ") // true
      regex.test(undefined) // true
      regex.test(null) // true 
    • 서컴플렉스, 햇마크 (메타 캐릭터)

      서컴플렉스 = 문자열의 시작 위치에 특정 문자가 있는지 확인한다.

      regex = /^e/ // e로 시작한다. 
      "abc" // false
      "ebc" // true => 문자열이 e로 시작함. 
      regex = /^[de]/ // d 또는 e로 시작한다. 
      "dab" // true
      "eab" // true
    • 달러 (메타 캐릭터)

      달러 = 문자열 끝 위치에 특정 문자가 있는지 확인한다.

      regex = /b$/
       "acdb" // true // 문자열 끝에 b가
    • 시작 끝 기호 (^...$) (메타 캐릭터)있다.

      시작 끝 기호 = 문자열 내용이 정확히...와 일치하는지 확인한다.

       let regex = /^same$/ // 정확히 same이라면 
       regex.test("same") // true 
    • 덧셈 기호 (메타 캐릭터)

      덧셈 기호 = 특정 문자열에서 그 문자열이 1회 이상 반복되는지 확인.

      regex = /k+/
      "ka" // true 
      "kka" // true
    • 별표 (메타 캐릭터)

      별표 = 특정 문자열에서 그 문자열이 0회 이상 반복되는지 확인.

       regex = /a*/
       "a", "ab", "exception" // true
       regex = /이.*재/
       "이재","이성재","이승재","이이재" // true
    • 중괄호 (메타 캐릭터)

      중괄호 = 특정 문자열 중에서 그 부분이 x회 ~ y회 반복되는지 확인.

      regex = /b{3}/ or /b{3, }/
      "bbb", "bbba" // true
      "bb" // false
      regex = /^b{1,3}$/ //알파벳 b가 1회에서 3회 반복되는지 확인. 
      "bbb" // true
      regex = /^\d{3}$/ 
      "111" // true
    • 역슬래시 (메타 캐릭터)

      역슬래시 = 메타 캐릭터의 앞에 붙이면 해당 메타 캐릭터의 역할을 제거한다.

       regex = /abc(역슬래시).def/ // 메타 캐릭터 .의 역할을 제거한다. 
       "abc.def" // true
    • 물음표 (메타 캐릭터)

      물음표 = 물음표 앞의 문자가 없거나 하나만 있는지 확인.

       regex = /hell ?world/
       "hell world", "hellworld" // true 
    • 부가적인 것들

      \d+ = 하나 혹은 그 이상 연결된 숫자.
      [1-9]\d* = 자연수 (처음에 1~9 사이의 숫자 나온 후 그 뒤에 0개 이상의 숫자 나옴)
      \d+-?\d+-?\d+ = 021234567과 02-123-4567 모두 표시할 수 있어야 한다. '-?'는 ~가 있거나 없다라는 것을 표현한다.
      \d+[ -]?\d+[ -]?\d+ = 010 1234 5678과 같이 공백이 포함된 전화번호도 찾아야 한다.
      \d{2}[ -]?\d{3}[ -]?\d{4} = '\d{2}'는 숫자가 연속 두 번 나온다라는 것을 표현한다.
      \d{2,3}[ -]?\d{3,4}[ -]?\d{4} = 021234567, 010 1234 5678 전화번호도 찾아야 하기에 \d{2,3}와 같이 숫자가 2~3자릿수라고 표현한다.
      [abcde] = 알파벳 a,b,c,d,e만 고르고 싶을 경우 사용한다.

profile
전직 항해사 출신 미래 개발자

0개의 댓글