ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] μ •κ·œν‘œν˜„μ‹(regular expression)
    JavaScript 2020. 7. 11. 16:28

    🌈 μ •κ·œ ν‘œν˜„μ‹ μ •μ˜

    • μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ •κ·œ ν‘œν˜„μ‹μ€ RegExp 객체둜 ν‘œν˜„λœλ‹€.

    • μ •κ·œ ν‘œν˜„μ‹ λ¦¬ν„°λŸ΄μ€ ν•œ 쌍의 μŠ¬λž˜μ‹œ(/) 문자 사이에 μœ„μΉ˜ν•œλ‹€.

      // s둜 λλ‚˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄κ³Ό λ§€μΉ˜λœλ‹€.
      const pattern = /s$/; // λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄
      const pattern = new RegExp('s$'); // RegExp() μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜

    🎈 λ¦¬ν„°λŸ΄ 문자

    • λͺ¨λ“  μ˜λ¬Έμžμ™€ μˆ«μžλŠ” κ·Έ 문자 κ·ΈλŒ€λ‘œ μ •κ·œ ν‘œν˜„μ‹μ—μ„œ λ§€μΉ˜λœλ‹€.

    • νŠΉμ •ν•œ λΉ„-μ•ŒνŒŒλ²³ λ¬Έμžλ“€μ€ μ—­μŠ¬λž˜μ‹œ(\)둜 μ‹œμž‘ν•˜λŠ” μ΄μŠ€μΌ€μ΄ν”„ λ¬Έμžμ—΄μ„ 톡해 μ§€μ›ν•œλ‹€.

    • ꡬ두점 문자(?,!,.,λ“±λ“±)λ₯Ό 일반 문자둜 μ·¨κΈ‰ν• λ €λ©΄ λ°˜λ“œμ‹œ \λ₯Ό 문자 μ•žμ— λΆ™μ—¬μ•Ό ν•œλ‹€.

      // μ—­μŠ¬λž˜μ‹œλ₯Ό ν¬ν•¨ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄κ³Ό λ§€μΉ˜λœλ‹€.
      const pattern = /\\/;
     

    μ΄μŠ€μΌ€μ΄ν”„ 문자 - μœ„ν‚€λ°±κ³Ό, 우리 λͺ¨λ‘μ˜ 백과사전

    μœ„ν‚€λ°±κ³Ό, 우리 λͺ¨λ‘μ˜ 백과사전. μ΄μŠ€μΌ€μ΄ν”„ λ¬ΈμžλŠ” μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€λ₯Ό λ”°λ₯΄λŠ” λ¬Έμžλ“€λ‘œμ„œ λ‹€μŒ λ¬Έμžκ°€ 특수 λ¬Έμžμž„μ„ μ•Œλ¦¬λŠ” λ°±μŠ¬λž˜μ‹œ(\)λ₯Ό μ‚¬μš©ν•œλ‹€. 일뢀 μ œμ–΄ μ‹œν€€μŠ€μΈ μ΄μŠ€μΌ€μ΄ν”„ 문자�

    ko.wikipedia.org

    🎈 문자 클래슀

    • κ°œλ³„ λ¦¬ν„°λŸ΄ λ¬Έμžλ“€μ€ κ·Έ λ¬Έμžλ“€μ„ λŒ€κ΄„ν˜Έ([])둜 λ¬Άμ–΄μ„œ 문자 클래슀둜 λ‹€λ£° 수 μžˆλ‹€.

    • 문자 ν΄λž˜μŠ€λŠ” ν•΄λ‹Ή 클래슀 λ‚΄μ˜ λͺ¨λ“  λ¬Έμžμ— λ§€μΉ˜λœλ‹€.

      // a, b, c 쀑 아무 κΈ€μžμ—λ‚˜ λ§€μΉ˜λœλ‹€.
      const pattern = /[abc]/;
    • λΆ€μ • 문자 ν΄λž˜μŠ€λŠ” λŒ€κ΄„ν˜Έ μ•ˆμ— μžˆλŠ” λ¬΄μžλ“€μ„ μ œμ™Έν•œ λͺ¨λ“  λ¬Έμžμ™€ λ§€μΉ˜λœλ‹€.

    • λŒ€κ΄„ν˜Έμ•ˆμ— 캐럿(^)을 제일 μ•žμ— 두면 λΆ€μ • 문자 클래슀λ₯Ό μ •μ˜ν•  수 μžˆλ‹€.

      // a, b, cλ₯Ό μ œμ™Έν•œ λͺ¨λ“  λ¬Έμžμ™€ λ§€μΉ˜λœλ‹€.
      const pattern = /[^abc]/;
    • ν•˜μ΄ν”ˆ(-)을 μ‚¬μš©ν•˜μ—¬ 문자의 λ²”μœ„λ₯Ό 지정할 수 μžˆλ‹€.

      // μ†Œλ¬Έμž aλΆ€ν„° zκΉŒμ§€μ™€ λ§€μΉ˜λœλ‹€.
      const pattern = /[a-z]/;
      // λͺ¨λ“  μ•ŒνŒŒλ²³ κΈ€μžμ™€ μˆ«μžμ™€ λ§€μΉ˜λœλ‹€.
      const pattern = /[a-zA-Z0-9]/;
    • μžλ°” 슀크립트 μ •κ·œ ν‘œν˜„μ‹ λ¬Έλ²•μ—λŠ” 자주 μ‚¬μš©λ˜λŠ” 문자 클래슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 특수 λ¬Έμžμ™€ μ΄μŠ€μΌ€μ΄ν”„ λ¬Έμžμ—΄μ΄ μ •μ˜ λ˜μ–΄ μžˆλ‹€.

    • μ΄μŠ€μΌ€μ΄ν”„λœ 특수 문자 클래슀λ₯Ό λŒ€κ΄„ν˜Έ λ‚΄μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

      // 곡백 문자 ν•˜λ‚˜ λ˜λŠ” 숫자 문자 ν•˜λ‚˜μ™€ λ§€μΉ˜λœλ‹€.
      const pattern = /[\s\d]/;
    • \bλŠ” λ³„λ„μ˜ νŠΉλ³„ν•œ 의미λ₯Ό μ§€λ‹ˆκ³  μžˆμ§€λ§Œ, 문자 클래슀 λ‚΄μ—μ„œ μ‚¬μš©λ˜λ©΄ 백슀페이슀 문자λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

    • μ •κ·œ ν‘œν˜„μ‹μ—μ„œ 백슀페이슀 문자 자체λ₯Ό ν‘œν˜„ν•˜λ €λ©΄ ν•˜λ‚˜μ˜ μš”μ†Œλ§Œ μžˆλŠ” 문자 클래슀λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

      // 백슀페이슀 λ¦¬ν„°λŸ΄
      const pattern = /[\b]/;

    πŸ“Œ μ •κ·œ ν‘œν˜„μ‹ 문자 클래슀

    • 문자 의미
      [...] λŒ€κ΄„ν˜Έ 사이에 μžˆλŠ” ν•œ 문자.
      [^...] λŒ€κ΄„ν˜Έ 사이에 μ—†λŠ” ν•œ 문자.
      . μ€„λ°”κΏˆ λ¬Έμžλ‚˜ μœ λ‹ˆμ½”λ“œ 라인 μ’…λ£Œ 문자λ₯Ό μ œμ™Έν•œ λͺ¨λ“  문자.
      \w ASCII μ›Œλ“œ 문자. [a-zA-Z0-9]와 κ°™λ‹€.
      \W ASCII μ›Œλ“œ λ¬Έμžκ°€ μ•„λ‹Œ λͺ¨λ“  문자. [^a-zA-Z0-9]와 κ°™λ‹€.
      \s λͺ¨λ“  μœ λ‹ˆμ½”λ“œ 곡백 문자.
      \S μœ λ‹ˆμ½”λ“œ 곡백 λ¬Έμžκ°€ μ•„λ‹Œ λͺ¨λ“  문자. (but! \w와 \SλŠ” 같지 μ•Šλ‹€.)
      \d λͺ¨λ“  ASCII 숫자. [0-9]와 κ°™λ‹€.
      \D ASCII μˆ«μžκ°€ μ•„λ‹Œ λͺ¨λ“  문자. [^0-9]와 κ°™λ‹€.
      [\b] 백슀페이슀 λ¦¬ν„°λŸ΄(νŠΉμˆ˜ν•œ 경우)

    🎈 반볡

    • λ°˜λ³΅μ„ μ§€μ •ν•˜λŠ” λ¬ΈμžλŠ” 항상 λ°˜λ³΅μ„ 지정할 νŒ¨ν„΄ 뒀에 λ‚˜μ˜¨λ‹€.

      const pattern = /\d{2,4}/; // 두 μžλ¦¬μ—μ„œ λ„€ 자리의 μˆ«μžμ™€ λ§€μΉ˜λœλ‹€.
      const pattern = /\w{3}\d?/; // 3개의 λ¬Έμžμ™€ μƒλž΅ κ°€λŠ₯ν•œ μˆ«μžμ™€ λ§€μΉ˜λœλ‹€.
      const pattern = /\s+java\s+/; // java와 μ•ž λ’€λ‘œ ν•˜λ‚˜ μ΄μƒμ˜ 곡백 문자λ₯Ό ν¬ν•¨ν•œ λ¬Έμžμ—΄κ³Ό λ§€μΉ˜λœλ‹€.
      const pattern = /[^(]*/; // μ‹œμž‘ κ΄„ν˜Έκ°€ μ•„λ‹Œ 0개 μ΄μƒμ˜ λ¬Έμžμ™€ λ§€μΉ˜λœλ‹€.

      πŸ“Œ μ •κ·œ ν‘œν˜„μ‹ 반볡 문자

    • 문자 의미
      {n,m} μ•žμ˜ ν•­λͺ©μ΄ 적어도 n번 이상, m번 μ΄ν•˜λ‘œ λ‚˜νƒ€λ‚œλ‹€.
      {n,} μ•žμ˜ ν•­λͺ©μ΄ n번 이상 λ‚˜νƒ€λ‚œλ‹€.
      {n} μ•žμ˜ ν•­λͺ©μ΄ μ •ν™•ν•˜κ²Œ n번 λ‚˜νƒ€λ‚œλ‹€.
      ? μ•žμ˜ ν•­λͺ©μ΄ 0 λ˜λŠ” ν•œ 번 λ‚˜νƒ€λ‚œλ‹€. 즉, μ•ˆλ‚˜μ˜¬μˆ˜λ„ μžˆλ‹€.{0,1}κ³Ό κ°™λ‹€.
      + μ•žμ˜ ν•­λͺ©μ΄ ν•œ 번 이상 λ‚˜νƒ€λ‚œλ‹€. {1,}κ³Ό κ°™λ‹€.
      * μ•žμ˜ ν•­λͺ©μ΄ 0번 λ˜λŠ” κ·Έ 이상 λ‚˜νƒ€λ‚œλ‹€. {0,}κ³Ό κ°™λ‹€.
    • * 와 ? 반볡 λ¬ΈμžλŠ” μ•žμ— μ˜€λŠ” λ¬Έμžκ°€ 0번 λ§€μΉ˜λœλ‹€κ³  κ°„μ£Όν•˜κΈ° 떄문에 반볡 λ¬Έμžμ—΄ μ•žμ˜ λ¬Έμžκ°€ λ§€μΉ˜λ˜μ§€ μ•ŠλŠ” μƒν™©μ—μ„œλ„ ν—ˆμš©ν•œλ‹€.

      const pattern = /a*/;
      "bbbb".match(pattern);
      // ["", index: 0, input: "bbbb", groups: undefined]

    🎈 λŒ€μ²΄, κ·Έλ£Ήν™”, μ°Έμ‘°

    • μ •κ·œ ν‘œν˜„μ‹ 문법은 λŒ€μ²΄ ν‘œν˜„μ‹(alternative), λΆ€λΆ„ ν‘œν˜„μ‹ κ·Έλ£Ήν™”(grouping subexpression), 이전 λΆ€λΆ„ ν‘œν˜„μ‹μ„ μ°Έμ‘°ν•˜λŠ” νŠΉλ³„ν•œ 문자λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλ‹€.

    🟦 λŒ€μ²΄ ν‘œν˜„μ‹(alternative)

    • νŒŒμ΄ν”„ 문자( | )λŠ” λŒ€μ²΄ ν‘œν˜„μ‹μ„ κ΅¬λΆ„ν•œλ‹€.

      // λ¬Έμžμ—΄ ab λ˜λŠ” cd λ˜λŠ” ef와 λ§€μΉ˜λœλ‹€.
      const pattern = /ab|cd|ef/;
      // μ„Έ 자리의 숫자문자 λ˜λŠ” λ„€ 개의 μ†Œλ¬Έμžλ‘œ 이루어진 λ¬Έμžμ—΄κ³Ό λ§€μΉ˜λœλ‹€.
      const pattern = /\d{3}|[a-z]{4}/;
    • λŒ€μ²΄ ν‘œν˜„μ‹μ€ 맀치λ₯Ό λ°œκ²¬ν•  λ•ŒκΉŒμ§€ μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½μœΌλ‘œ μˆ˜ν–‰λœλ‹€.

      // ab에 μ μš©ν•˜λ©΄, 였직 첫 번째 κΈ€μž a만 λ§€μΉ˜λœλ‹€.
      const pattern = /a|ab/;
      "ab".match(pattern);
      // ["a", index: 0, input: "ab", groups: undefined]

    🟦 λΆ€λΆ„ ν‘œν˜„μ‹ κ·Έλ£Ήν™”(grouping subexpression)

    • μ—¬λŸ¬ ν•­λͺ©μ„ ν•˜λ‚˜μ˜ λΆ€λΆ„ ν‘œν˜„μ‹μœΌλ‘œ λ¬Άκ³ (κ·Έλ£Ήν™”), μ΄λ ‡κ²Œ 묢인 ν•­λͺ©λ“€μ„ |,* ,+,? 등이 ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ μ·¨κΈ‰ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것이닀.

      // java와 κ·Έλ‹€μŒμ— μƒλž΅ κ°€λŠ₯ν•œ scriptκ°€ μ˜€λŠ” λ¬Έμžμ—΄κ³Ό λ§€μΉ˜λœλ‹€.
      const pattern = /java(script)?/;
      // ab λ˜λŠ” cdκ°€ ν•œ 번 이상 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄ ν˜Ήμ€ λ¬΄μžμ—΄ ef와 λ§€μΉ˜λœλ‹€.
      const pattern = /(ab|cd)+|ef/;

    🟦 이전 λΆ€λΆ„ ν‘œν˜„μ‹

    • 전체 νŒ¨ν„΄ μ•ˆμ— λΆ€λΆ„ νŒ¨ν„΄μ„ μ •μ˜ν•˜λŠ” 것이닀.

    • μ •κ·œ ν‘œν˜„μ‹μ΄ λŒ€μƒ λ¬Έμžμ—΄μ— 맀치되면 κ΄„ν˜Έλ‘œ λ‘˜λŸ¬μ‹ΈμΈ νŠΉμ • νŒ¨ν„΄κ³Ό λ§€μΉ˜λ˜λŠ” λΆ€λΆ„ λ¬Έμžμ—΄μ„ μΆ”μΆœν•  수 μžˆλ‹€.

      // λ§Œμ•½ 각 λ§€μΉ˜μ— λŒ€ν•΄ 끝에 μžˆλŠ” 숫자λ₯Ό λ½‘λŠ”λ‹€λ©΄, κ΄„ν˜Έ μ•ˆμ— 두고 μ°Ύμ•„λ‚Έ 맀치 κ²°κ³Όμ—μ„œ 숫자λ₯Ό μΆ”μΆœν•  수 μžˆλ‹€.
      const pattern = /[a-z]+(\d+)/;
    • κ΄„ν˜Έλ‘œ λ‘˜λŸ¬μ‹ΈμΈ λΆ€λΆ„ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜λ©΄ 같은 μ •κ·œ ν‘œν˜„μ‹ λ‚΄μ—μ„œ ν•΄λ‹Ή 뢀뢄을 λ‹€μ‹œ μ°Έμ‘°ν•  수 μžˆλ‹€.

    • 예λ₯Ό λ“€μ–΄ \1은 첫 번째 λΆ€λΆ„ ν‘œν˜„μ‹μ„ μ°Έμ‘°, \3은 μ„Έλ²ˆμ§Έ λΆ€λΆ„ ν‘œν˜„μ‹μ„ μ°Έμ‘°ν•œλ‹€.

      // μ€‘μ²©λœ λΆ€λΆ„ ν‘œν˜„ ([Ss]cript)λŠ” \2둜 μ°Έμ‘°ν•  수 μžˆλ‹€.
      const pattern = /([Jj]ava([Ss]cript?)\sis\s(fun\w*)/;
    • 문자 의미
      νŒŒμ΄ν”„ 문자 λŒ€μ²΄. μ™Όμͺ½μ— μžˆγ„΄λŠ” λΆ€λΆ„ ν‘œν˜„μ‹μ΄λ‚˜ 였λ₯Έμͺ½μ— μžˆλŠ” λΆ€λΆ„ ν‘œν˜„μ‹ 쀑 ν•˜λ‚˜λ₯Ό λ§€μΉ˜ν•œλ‹€.
      (...) κ·Έλ£Ήν™”. ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ κ·Έλ£Ήν™”λœ μ•„μ΄ν…œμœΌλ‘œ * ,+,?,νŒŒμ΄ν”„ λ¬Έμžλ“±μ— μ˜ν•΄ μ‚¬μš©λ  수 μžˆλ‹€.
      λ‚˜μ€‘μ— 이 그룹을 μ°Έμ‘°ν•  수 μžˆλ„λ‘ 이 κ·Έλ£Ήκ³Ό 맀치된 문자λ₯Ό κΈ°μ–΅ν•œλ‹€.
      (?:...) κ·Έλ£Ήν™”λ§Œ ν•œλ‹€. 그룹의 ν•­λͺ©λ“€μ€ ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ μ·¨κΈ‰λ˜μ§€λ§Œ, 이 그룹에 λ§€μΉ˜λ˜λŠ” λ¬Έμžλ“€μ€ κΈ°μ–΅ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.
      \n n번째 그룹이 처음 λ§€μΉ˜ν–ˆλ˜ λ¬Έμžμ™€ 같은 문자λ₯Ό λ§€μΉ˜ν•œλ‹€.

    🎈 μ •κ·œ ν‘œν˜„μ‹ 액컀(anchor)

    • λ§€μΉ˜μ— μ‚¬μš©ν•  문자λ₯Ό μ§€μ •ν•˜μ§€ μ•Šκ³  λ§€μΉ˜κ°€ 일어날 수 μžˆλŠ” μ μ ˆν•œ μœ„μΉ˜λ₯Ό μ§€μ •ν•œλ‹€.

    • μ‹œμž‘ 뢀뢄에 μ •κ·œμ‹μ„ κ³ μ •ν•˜λŠ” ^와 λ¬Έμžμ—΄μ˜ λ§ˆμ§€λ§‰μ— μ •κ·œμ‹μ„ κ³ μ •ν•˜λŠ” $κ°€ 많이 μ‚¬μš©λœλ‹€.

      // JavaScript λ¬Έμžμ—΄ μžμ²΄κ°€ λ§€μΉ˜λœλ‹€.
      const pattern = /^JavaScript$/;
      // 이 경우 λΆˆν•„μš”ν•œ κ³΅λ°°κΉŒμ§€ λ“€μ–΄κ°„λ‹€.
      const pattern2 = /\sJava\s/;
      "my Java Script".match(pattern2);
      // [" Java ", index: 3, input: " my Java Script ", groups: undefined]
      // 단어 경계에 λ§€μΉ˜λœλ‹€. λΆˆν•„μš”ν•œ 곡백이 μ—†λ‹€.
      const pattern3 = /\bJava\b/;
      "my Java Script".match(pattern3);
      // ["Java", index: 3, input: "my Java Script", groups: undefined]
    • (?= 와 ) 사이에 ν‘œν˜„μ‹μ΄ 있으면 μ΄λŠ” κΈμ •ν˜• μ „λ°© 탐색 선언문이고, μ΄λŠ” 사이에 μžˆλŠ” λ¬Έμžλ“€μ΄ λ°˜λ“œμ‹œ λ§€μΉ˜λ˜μ–΄μ•Ό ν•œλ‹€λŠ” μ˜λ―Έμ§€λ§Œ, 맀치된 λ¬Έμžμ—΄μ΄ 결과에 ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” λœ»μ΄λ‹€.

    • (?!λ₯Ό μ‚¬μš©ν•˜μ—¬ 선언문을 λ§Œλ“€λ©΄ λΆ€μ •ν˜• μ „λ°© 탐색이고, κ·Έλ‹€μŒμ— λ‚˜μ˜€λŠ” λ¬Έμžμ—΄λ“€μ΄ 맀치되면 μ•ˆ λœλ‹€λŠ” λœ»μ΄λ‹€.

    • ✨ 더 μžμ„Έν•œ λ‚΄μš©μ€ μ°Έκ³ 

     

    μ •κ·œ ν‘œν˜„μ‹(Regex) κ°•μ’Œ 9편. 전후방탐색(lookaround)

    1. μ „λ°© 탐색(lookahead) μ „λ°© 탐색(lookahead)μ΄λž€ μž‘μ„±ν•œ νŒ¨ν„΄μ— μΌμΉ˜ν•˜λŠ” μ˜μ—­μ΄ μ‘΄μž¬ν•˜μ—¬λ„ κ·Έ 값이 μ œμ™Έλ˜μ–΄μ„œ λ‚˜μ˜€λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€. μ „λ°© 탐색 κΈ°ν˜ΈλŠ” ?= 이며, = λ‹€μŒμ— μ˜€λŠ” λ¬Έμžκ°€ μΌμΉ˜ν•˜λŠ” μ˜μ—­οΏ½

    blog.hexabrain.net

    • 문자 의미
      ^ λ¬Έμžμ—΄μ˜ μ‹œμž‘ λΆ€λΆ„, μ •κ·œμ‹μ΄ μ–΄λ € 쀄을 λŒ€μƒμœΌλ‘œ ν•˜λŠ” 경우 ν•œ μ€„μ˜ μ‹œμž‘κ³Ό μΌμΉ˜ν•œλ‹€.
      $ λ¬Έμžμ—΄μ˜ 끝을 λ‚˜νƒ€λ‚Έλ‹€. μ—¬λŸ¬ 쀄일 경우 ν•œ μ€„μ˜ λ§ˆμ§€λ§‰μ„ λ‚˜νƒ€λ‚Έλ‹€.
      \b 단어 경계λ₯Ό λ‚˜νƒ€λ‚Έλ‹€
      \B 단어 경계가 μ•„λ‹Œ 곳의 μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
      (?=p) μ „λ°© 탐색 μ„ μ–ΈμœΌλ‘œ νŒ¨ν„΄ p와 λ§€μΉ˜λ˜μ–΄μ•Ό ν•˜μ§€λ§Œ, 맀치 κ²°κ³Όμ—λŠ” ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€
      (?!p λΆ€μ •ν˜• μ „λ°© 탐색 μ„ μ–ΈμœΌλ‘œ '(?!' λ‹€μŒμ— λ‚˜μ˜€λŠ” λ¬Έμžλ“€μ€ νŒ¨ν„΄ p와 λ§€μΉ˜λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.

    🎈 ν”Œλž˜κ·Έ(flag)

    • λ‹€λ₯Έ μ •κ·œ ν‘œν˜„μ‹ λ¬Έλ²•κ³ΌλŠ” 달리 ν”Œλž˜κ·ΈλŠ” / 문자 쌍 λ°”κΉ₯에, 즉 두 번째 μŠ¬λž˜μ‹œ λ‹€μŒμ— μ“΄λ‹€.
    • i ν”Œλž˜κ·ΈλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜μ§€ μ•Šκ³  νŒ¨ν„΄ 맀칭이 λ˜μ–΄μ•Ό ν•œλ‹€.
    • g ν”Œλž˜κ·ΈλŠ” μ „μ—­ νŒ¨ν„΄ 맀칭을 μ§€μ •ν•˜λŠ”λ°, 즉 검색할 λ¬Έμžμ—΄λ‚΄μ—μ„œ νŒ¨ν„΄μ˜ 첫 번째 맀칭 결과뿐 μ•„λ‹ˆλΌ λͺ¨λ“  맀칭 κ²°κ³Όλ₯Ό μ–»λŠ”λ‹€.
    • m ν”Œλž˜κ·ΈλŠ” μ—¬λŸ¬ 쀄에 걸쳐 νŒ¨ν„΄ 맀칭을 μˆ˜ν–‰ν•˜λŠ” κ²ƒμœΌλ‘œ m ν”Œλž˜κ·Έλ₯Ό μ§€μ •ν•œ μƒνƒœμ—μ„œ 검색될 λ¬Έμžμ—΄μ΄ μ€„λ°”κΏˆ 문자λ₯Ό ν¬ν•¨ν•˜κ³  있으면, ^와 $ μ•΅μ»€λŠ” λ¬Έμžμ—΄μ˜ μ‹œμž‘κ³Ό 끝을 λ‚˜νƒ€λ‚Ό 뿐만 μ•„λ‹ˆλΌ 각 μ€„μ˜ μ‹œμž‘κ³Ό 끝을 λ‚˜νƒ€λ‚΄κΈ°λ„ ν•œλ‹€.
      // java 뿐만 μ•„λ‹ˆλΌ Java\nis fun 에도 λ§€μΉ˜λœλ‹€.
      const pattern = /java$/im/;

      πŸ“Œ μ •κ·œ ν‘œν˜„μ‹ ν”Œλž˜κ·Έ

    • 문자 의미
      i λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜μ§€ μ•ŠλŠ” 맀칭을 μˆ˜ν–‰ν•œλ‹€.
      g μ „μ—­ 맀칭을 μˆ˜ν–‰ν•œλ‹€. 즉, 처음 λ§€μΉ˜μ—μ„œ 끝내지 μ•Šκ³  λͺ¨λ“  맀치λ₯Ό μ°ΎλŠ”λ‹€.
      m μ—¬λŸ¬ 쀄λͺ¨λ“œλ‘œ ^은 μ€„μ˜ μ‹œμž‘μ΄λ‚˜ λ¬Έμžμ—΄μ˜ μ‹œμž‘κ³Ό μΌμΉ˜ν•˜κ³ , $λŠ” μ€„μ˜ λμ΄λ‚˜ λ¬Έμžμ—΄μ˜ 끝과 μΌμΉ˜ν•œλ‹€.

    🌈 μ°Έκ³  λ¬Έμ„œ

     

    μ •κ·œ ν‘œν˜„μ‹

    μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄μ— λ‚˜νƒ€λŠ” νŠΉμ • 문자 μ‘°ν•©κ³Ό λŒ€μ‘μ‹œν‚€κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ, μ •κ·œ ν‘œν˜„μ‹ λ˜ν•œ κ°μ²΄μž…λ‹ˆλ‹€.  이 νŒ¨ν„΄λ“€μ€ RegExp의 exec λ©”μ†Œλ“œμ™€ test λ©”μ†Œλ“œ  ,οΏ½οΏ½

    developer.mozilla.org

     

    'JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

    [JavaScript ES6/ ecmascript 2015] 문법 정리  (0) 2020.06.19

    λŒ“κΈ€

Designed by Seungmin Sa.