Skip to content

Latest commit

Β 

History

History
92 lines (79 loc) Β· 3.72 KB

File metadata and controls

92 lines (79 loc) Β· 3.72 KB

Regular Expression

μ •κ·œ ν‘œν˜„μ‹μ˜ κΈ°λ³Έ

  • λ¬Έμžμ—΄μ˜ νŒ¨ν„΄μ„ ν‘œν˜„ν•˜κΈ° μœ„ν•œ 도ꡬ
  • μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜λ©΄ λ¬Έμžμ—΄ μ•ˆμ—μ„œ νŠΉμ • νŒ¨ν„΄μ„ κ°€μ§€λŠ” λ¬Έμžμ—΄μ„ 검색/μΆ”μΆœ/μΉ˜ν™˜ν•˜λŠ” 처리λ₯Ό 직접 μž‘μ„±ν•˜μ§€ μ•Šκ³  κ΅¬ν˜„ κ°€λŠ₯
  • Perl의 μ •κ·œν‘œν˜„μ‹μ„ 받아듀인 것(Perl5)
  • ES3λΆ€ν„° ν‘œμ€€

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

var reg = new RegExp("abc");
var reg = /abc/; // μ •κ·œ ν‘œν˜„μ‹ λ¦¬ν„°λŸ΄
  • νŒ¨ν„΄ μž‘μ„±
    • 일반문자 : 숫자(0~9), μ•ŒνŒŒλ²³(λŒ€,μ†Œλ¬Έμž)
    • 특수문자 : +, . λ“±
      • μ •κ·œ ν‘œν˜„μ‹μ—μ„œ μ‚¬μš©ν•˜λŠ” 특수문자 = λ©”νƒ€λ¬Έμž(meta character)
      • λ¬Έμžλ‘œμ„œ μ‚¬μš© μ‹œ 메타 문자 μ•žμ— \ 문자λ₯Ό 뢙여야함

νŒ¨ν„΄ λ§€μΉ­

  • 일치(match) : μ–΄λ–€ λ¬Έμžμ—΄μ΄ μ •κ·œ ν‘œν˜„μ‹μ΄ ν‘œν˜„ν•˜λŠ” λ¬Έμžμ—΄μ˜ νŒ¨ν„΄μ„ κ°€μ§€κ³  μžˆμ„ λ•Œ κ·Έ λ¬Έμžμ—΄μ„ κ°€λ¦¬μΌœ μ •κ·œ ν‘œν˜„μ‹κ³Ό μΌμΉ˜ν•œλ‹€κ³  ν•œλ‹€
  • λ¬Έμžμ—΄μ΄ μ •κ·œ ν‘œν˜„μ‹κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” μž‘μ—…μ„ νŒ¨ν„΄ 맀칭이라 함

RegExp 객체의 λ©”μ„œλ“œ

  • RegExp.prototype - test, exec

    • test : μ •κ·œ ν‘œν˜„μ‹μ˜ λ¬Έμžμ—΄μ΄ μΌμΉ˜ν•˜λŠ”μ§€ λœ»ν•˜λŠ” 논리값 λ°˜ν™˜
    var reg = /cat/;
    console.log(reg.test("cats and dogs")); // true
    console.log(reg.test("Cat")); // false
    
    // Catκ°€ λŒ€λ¬Έμžμ΄κΈ° λ•Œλ¬Έμ— 뢈일치
    • exec : μ •κ·œ ν‘œν˜„μ‹κ³Ό μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•˜μ—¬ μΌμΉ˜ν•œ λ¬Έμžμ—΄μ„ λ°°μ—΄λ‘œ λ°˜ν™˜
    • λ°˜ν™˜λœ λ°°μ—΄μ—λŠ” index와 input ν”„λ‘œνΌν‹°κ°€ 있음
    • index ν”„λ‘œνΌν‹°μ—λŠ” κ°€μž₯ 처음 μΌμΉ˜ν•œ μœ„μΉ˜κ°€ λ“€μ–΄κ°€κ³  input ν”„λ‘œνΌν‹°μ—λŠ” μΌμΉ˜ν•œ λ¬Έμžμ—΄μ΄ 듀어감
    var reg = /Script/;
    var result = reg.exec("JavaScript");
    console.log(result[0]); // Script
    
    console.log(result.index); // 4
    console.log(result.input); // JavaScript
  • String.prototype - match, replace, search, split

기본적인 μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄

  • μ •κ·œ ν‘œν˜„μ‹μ˜ 핡심은 메타 문자λ₯Ό μ‚¬μš©ν•œ λ¬Έμžμ—΄ νŒ¨ν„΄μ˜ ν‘œν˜„

λ¦¬ν„°λŸ΄ 문자

  • 일반 문자 = λ¦¬ν„°λŸ΄ 문자

  • μ •κ·œν‘œν˜„μ‹ λ¦¬ν„°λŸ΄ 문자 λ¦¬ν„°λŸ΄λ¬Έμž|μ„€λͺ… ---|--- μœ λ‹ˆμ½”λ“œλ¬Έμž|문자 κ·Έ 자체λ₯Ό λœ»ν•¨(단, ^, $, , ., *, +, ?, (, ), [, ], {, }, |λŠ” μ œμ™Έ) \0|NULL문자(\u0000) \n|κ°œν–‰ 문자(\u000A) \t|νƒ­ 문자(\u0009) \v|수직 νƒ­ 문자(\u000B) \f|λ‹€μŒ νŽ˜μ΄μ§€ 문자)(FF=\u000C) \r|캐리지 리턴 문자(CR=u000D) \xhh|16μ§„μˆ˜ hh둜 μ§€μ •λœ ASCII 문자 \uhhh|16μ§„μˆ˜ hhhh둜 μ§€μ •λœ μœ λ‹ˆμ½”λ“œ 문자 \cX|μ œμ–΄ 문자

  • ^ $ \ . * + ? ( ) [ ] { } |

  • 이 메타 문자λ₯Ό 문자둜 ν‘œν˜„ν•  λ•ŒλŠ” 메타 문자 μ•žμ— \λ₯Ό λΆ™μ—¬ μ΄μŠ€μΌ€μ΄ν”„

  • 이 외에 μžλ°”μŠ€ν¬λ¦½νŠΈ μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μ—μ„œ μ΄μŠ€μΌ€μ΄ν”„κ°€ ν•„μš”ν•œ λ¬ΈμžλŠ” /

문자 클래슀

  • 문자 클래슀 : [...]

    • 문자 ν΄λž˜μŠ€λŠ” νŠΉμ • 문자 μ§‘ν•© μ•ˆμ˜ λͺ¨λ“  단일 λ¬Έμžμ™€ 일치
    • 문자 μ§‘ν•©μ˜ μš”μ†Œκ°€ λ˜λŠ” 문자 λ¦¬ν„°λŸ΄μ„ λ‚˜μ—΄ν•˜μ—¬ λŒ€κ΄„ν˜Έλ‘œ λ¬Άμ–΄μ„œ μ •μ˜
    • λŒ€κ΄„ν˜Έ μ•ˆμ—μ„œ ν•˜μ΄ν”ˆ(-)을 μ‚¬μš©ν•˜λ©΄ 문자의 λ²”μœ„ μ§€μ • κ°€λŠ₯
    [a-z] // 전체 μ†Œλ¬Έμž 쀑 문자 ν•œ 개
    [abcx-z] // [a] [b] [c] [x] [y] [z] 쀑 문자 ν•œ 개
    [a-zA-Z0-9] // λͺ¨λ“  μ•ŒνŒŒλ²³κ³Ό 숫자 쀑 문자 ν•œ 개
    • λ²”μœ„λŠ” μœ λ‹ˆμ½”λ“œ 번호 μˆœμ„œμ— 따라 κ²°μ •
    [\u3131-\u314E] // ν•œκΈ€ 자음 ν•œ 개
    [\u314F-\u3163] // ν•œκΈ€ λͺ¨μŒ ν•œ 개
    [\uAC00-\uD7A3] // ν•œκΈ€ μŒκ³„ ν•œ 개
    [\uF900-\uFAFF] // CJK ν˜Έν™˜ ν•œμž ν•œ 개
  • λΆ€μ • 문자 클래슀 : [^...]

    • λΆ€μ • 문자 ν΄λž˜μŠ€λŠ” λŒ€κ΄„ν˜Έ μ•ˆμ— λ“€μ–΄ μžˆμ§€ μ•Šμ€ 단일 λ¬Έμžμ™€ 일치
    • [^...]은 [...]의 μ—¬μ§‘ν•©μ˜ 문자 ν•œ κ°œμ™€ 일치