😎
Onemorebottlee's TIL
  • πŸ€“Introduce
  • πŸ“–DevLog
    • πŸ’£Error
      • npm ERR! Cannot read properties of null (reading 'edgesOut')
      • git
        • src refspec main does not match any
      • NextJS
        • No img element
        • ReferenceError : document is not defined
        • `next/image` Un-configured Host
  • πŸ“ΊLecture
    • Nomad Coders
      • 초보자λ₯Ό μœ„ν•œ λ¦¬λ•μŠ€ 101
        • #0 Introduction
        • #1 PURE REDUX: COUNTER
        • #2 PURE REDUX: TO DO LIST
        • #3 REACT REDUX
        • #4 Redux Toolkit
      • 바닐라 JS둜 κ·Έλ¦Ό μ•± λ§Œλ“€κΈ°
      • React JS λ§ˆμŠ€ν„° 클래슀
        • #2 Styled Componnents
        • #3 TypeScript
        • #4 Crypto Tracker
        • #5 State Management
        • #6 Trello
        • #7 ANIMATIONS
      • Next.js μ‹œμž‘ν•˜κΈ°
        • #0 INTRODUCTION
        • #1 FRAMEWORK OVERVIEW
        • #2 PRACTICE PROJECT
      • Typescript둜 블둝체인 λ§Œλ“€κΈ°
        • #1 Introduction
        • #2 Overview of TypeScript
        • #3 Functions
        • #4 Classes and Interfaces
        • #5 TypeScript Blockchain
      • SQL Master Class
        • #1 Introduction
        • #2 SQLite
        • #3 Data Definition Language
        • #4 Data Manipulation Language
        • #5 Subqueries and CTEs
        • #6 Indexes
        • #7 MySQL
        • #8 Foreign Keys
        • #9 JOINS
        • #10 Nomalization
        • #11 Events & Triggers
        • #12 Full-Text Indexes
        • #13 PostgreSQL
        • #14 Functions And Procedures
        • #15 Transactions
        • #16 Data Control Language
        • #17 PostgreSQL JSON Columns
        • #18 PostgreSQL Extensions
        • #19 MongoDB
        • #20 REDIS
        • #21 Javascript and Python Drivers
    • Udemy
      • TypeScript λ§ˆμŠ€ν„° with Webpack & React
        • [S1] μ†Œκ°œ
        • [S2] μ„€μΉ˜ 및 μ„€μ •
        • [S3] νƒ€μž… μ• λ„ˆν…Œμ΄μ…˜ 기초
        • [S4] ν•¨μˆ˜
        • [S5] 객체 νƒ€μž…
        • [S6] λ°°μ—΄ νƒ€μž…
        • [S7] μœ λ‹ˆμ˜¨νƒ€μž…
        • [S8] Tuple & Enum
        • [S9] μΈν„°νŽ˜μ΄μŠ€
        • [S10] TypeScript 컴파일러
        • [S11] λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ DOM, νƒ€μž… 단언, 그리고 더 λ§Žμ€ λ‚΄μš©
        • [S12] Class
        • [S13] TS Class
        • [S14] Generics ⭐⭐⭐⭐⭐
        • [S15] Narrowing
        • [S16] Type Declarations
        • [S17] Module
        • [S18] Webpack κ³Ό TypeScript
        • [S19] React
    • λͺ¨λ‘λ₯Ό μœ„ν•œ 컴퓨터 κ³Όν•™ CS50
      • 1. μ»΄ν“¨νŒ… 사고
      • 2. Cμ–Έμ–΄
      • 3. λ°°μ—΄
      • 4. μ•Œκ³ λ¦¬μ¦˜
      • 5. λ©”λͺ¨λ¦¬
      • 6. 자료ꡬ쑰
    • μƒν™œμ½”λ”©
      • DATABASE
        • DATABASE1
  • πŸ“šBook
    • λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive
      • 1μž₯ ν”„λ‘œκ·Έλž˜λ°
      • 2μž₯ μžλ°”μŠ€ν¬λ¦½νŠΈλž€?
      • 3μž₯ μžλ°”μŠ€ν¬λ¦½νŠΈ 개발 ν™˜κ²½κ³Ό μ‹€ν–‰ 방법
      • 4μž₯ λ³€μˆ˜
      • 5μž₯ ν‘œν˜„μ‹κ³Ό λ¬Έ
      • 6μž₯ 데이터 νƒ€μž…
      • 7μž₯ μ—°μ‚°μž
      • 8μž₯ μ œμ–΄λ¬Έ
      • 9μž₯ νƒ€μž… λ³€ν™˜κ³Ό 단좕 평가 ⭐⭐⭐
      • 10μž₯ 객체 λ¦¬ν„°λŸ΄
      • 11μž₯ μ›μ‹œ κ°’κ³Ό 객체의 비ꡐ
      • 12μž₯ ν•¨μˆ˜ ⭐⭐⭐⭐
      • 13μž₯ μŠ€μ½”ν”„
      • 14μž₯ μ „μ—­ λ³€μˆ˜μ˜ 문제점
      • 15μž₯ let, const ν‚€μ›Œλ“œμ™€ 블둝 레벨 μŠ€μ½”ν”„ ⭐⭐⭐
      • 16μž₯ ν”„λ‘œνΌν‹° μ–΄νŠΈλ¦¬λ·°νŠΈ
      • 17μž₯ μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성
      • 18μž₯ ν•¨μˆ˜μ™€ 일급 객체 ⭐⭐
      • 19μž₯ ν”„λ‘œν† νƒ€μž… ⭐⭐⭐⭐⭐
      • 20μž₯ strict mode
      • 21μž₯ 빌트인 객체 ⭐
      • 22μž₯ this ⭐⭐⭐
      • 23μž₯ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
      • 24μž₯ ν΄λ‘œμ € ⭐⭐⭐⭐⭐⭐⭐
      • 25μž₯ 클래슀
      • 26μž₯ ES6 ν•¨μˆ˜μ˜ μΆ”κ°€ κΈ°λŠ₯
      • 27μž₯ λ°°μ—΄ ⭐⭐⭐
      • 28μž₯ Number
      • 29μž₯ Math
      • 30μž₯ Date
      • 31μž₯ RegExp
      • 32μž₯ String
      • 33μž₯ 7번째 데이터 νƒ€μž… Symbol
      • 34μž₯ μ΄ν„°λŸ¬λΈ”
      • 35μž₯ μŠ€ν”„λ ˆλ“œ 문법
      • 36μž₯ λ””μŠ€νŠΈλŸ­μ²˜λ§ ν• λ‹Ή
      • 37μž₯ Setκ³Ό Map
      • 38μž₯ λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ 과정⭐⭐⭐⭐⭐⭐⭐⭐
      • 39μž₯ DOM ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
      • 40μž₯ 이벀트⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
      • 41μž₯ 타이머
      • 42μž₯ 비동기 ν”„λ‘œκ·Έλž˜λ° ⭐⭐⭐⭐⭐⭐⭐⭐
      • 43μž₯ Ajax
      • 44μž₯ REST API
      • 45μž₯ ν”„λ‘œλ―ΈμŠ€
      • 46μž₯ μ œλ„ˆλ ˆμ΄ν„°μ™€ async/await
      • 47μž₯ μ—λŸ¬ 처리
      • 48μž₯ λͺ¨λ“ˆ
      • 49μž₯ Babelκ³Ό Webpack을 μ΄μš©ν•œ ES6+/ES.NEXT 개발 ν™˜κ²½ ꡬ좕
    • λŸ¬λ‹ νƒ€μž…μŠ€ν¬λ¦½νŠΈ
      • Ch.1 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ
      • Ch.2 νƒ€μž… μ‹œμŠ€ν…œ
      • Ch.3 μœ λ‹ˆμ–Έκ³Ό λ¦¬ν„°λŸ΄
      • Ch.4 객체
      • Ch.5 ν•¨μˆ˜
      • Ch.6 λ°°μ—΄
      • Ch.7 μΈν„°νŽ˜μ΄μŠ€
      • Ch.8 클래슀
      • Ch.9 νƒ€μž… μ œν•œμž
      • Ch.10 μ œλ„€λ¦­
      • Ch.11 μ„ μ–Έ 파일
      • Ch.12 IDE κΈ°λŠ₯ μ‚¬μš©
      • Ch.13 ꡬ성 μ˜΅μ…˜
      • Ch.14 ꡬ문 ν™•μž₯
      • Ch.15 νƒ€μž… 운영
      • μš©μ–΄ 사전
    • μžλ°”μŠ€ν¬λ¦½νŠΈ μ™„λ²½ κ°€μ΄λ“œ
    • SQL in 10 Minutes
      • 1μž₯ SQL μ΄ν•΄ν•˜κΈ°
      • 2μž₯ 데이터 κ°€μ Έμ˜€κΈ°
      • 3μž₯ κ°€μ Έμ˜¨ 데이터 μ •λ ¬ν•˜κΈ°
      • 4μž₯ 데이터 필터링
      • 5μž₯ κ³ κΈ‰ 데이터 필터링
      • 6μž₯ μ™€μΌλ“œμΉ΄λ“œ 문자λ₯Ό μ΄μš©ν•œ 필터링
      • 7μž₯ 계산 ν•„λ“œ μƒμ„±ν•˜κΈ°
      • 8μž₯ 데이터 μ‘°μž‘ ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
      • 9μž₯ 데이터 μš”μ•½
      • 10μž₯ 데이터 κ·Έλ£Ήν•‘
      • 11μž₯ μ„œλΈŒμΏΌλ¦¬ μ‚¬μš©ν•˜κΈ°
      • 12μž₯ ν…Œμ΄λΈ” 쑰인
      • 13μž₯ κ³ κΈ‰ ν…Œμ΄λΈ” 쑰인 μƒμ„±ν•˜κΈ°
      • 14μž₯ 쿼리 κ²°ν•©ν•˜κΈ°
      • 15μž₯ 데이터 μ‚½μž…ν•˜κΈ°
      • 16μž₯ 데이터 μ—…λ°μ΄νŠΈμ™€ μ‚­μ œ
      • 17μž₯ ν…Œμ΄λΈ” 생성과 μ‘°μž‘
      • 18μž₯ λ·° μ‚¬μš©ν•˜κΈ°
      • 19μž₯ μ €μž₯ ν”„λ‘œμ‹œμ € μ‚¬μš©ν•˜κΈ°
      • 20μž₯ νŠΈλžœμž­μ…˜ 처리 κ΄€λ¦¬ν•˜κΈ°
      • 21μž₯ μ»€μ„œ μ‚¬μš©ν•˜κΈ°
      • 22μž₯ κ³ κΈ‰ 데이터 μ‘°μž‘ μ˜΅μ…˜
    • 면접을 μœ„ν•œ CS 전곡지식 λ…ΈνŠΈ
      • 4 λ°μ΄ν„°λ² μ΄μŠ€
        • 4.1 λ°μ΄ν„°λ² μ΄μŠ€μ˜ κΈ°λ³Έ
    • 2023 이기적 SQL 개발자 μ΄λ‘ μ„œ + 기좜문제
      • 데이터 λͺ¨λΈλ§ 이해
        • S1. 데이터 λͺ¨λΈλ§
  • πŸ’»Study
    • CS 지식 λ°œν‘œ
      • 1회차
      • 2회차
      • 3회차
      • 4회차
      • 5회차
      • 6회차
      • 7회차
      • 8회차
      • 9회차
    • TypeScript Exercises
      • Ex 1
      • Ex 2
      • Ex 3
      • Ex 4
      • Ex 5
      • Ex 6
      • Ex 7
      • Ex 8
      • Ex 9
      • Ex 10
  • πŸ”„ETC
    • Article
      • Atomic Design Pattern
      • ν”„λ‘ νŠΈμ—”λ“œ 개발자
    • DATABASE
      • Oracle
        • CEIL() & FLOOR() - μ†Œμˆ˜μ  올림 & λ‚΄λ¦Ό
        • DUAL ν…Œμ΄λΈ” - μž„μ‹œ ν…Œμ΄λΈ”λ‘œ κ²°κ³Ό ν™•μΈν•˜κΈ°
    • Ubuntu
      • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ—…λ°μ΄νŠΈ
Powered by GitBook
On this page
  • 31.1 μ •κ·œ ν‘œν˜„μ‹μ΄λž€?
  • 31.2 μ •κ·œ ν‘œν˜„μ‹μ˜ 생성
  • 31.3 RegExp λ©”μ„œλ“œ
  • 31.4 ν”Œλž˜κ·Έ
  • 31.5 νŒ¨ν„΄
  • 31.6 자주 μ‚¬μš©ν•˜λŠ” μ •κ·œ ν‘œν˜„μ‹

Was this helpful?

  1. Book
  2. λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive

31μž₯ RegExp

31.1 μ •κ·œ ν‘œν˜„μ‹μ΄λž€?

μ •κ·œ ν‘œν˜„μ‹μ΄λž€ μΌμ •ν•œ νŒ¨ν„΄μ„ κ°€μ§„ λ¬Έμžμ—΄μ˜ 집합을 ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν˜•μ‹ 언어이닀.

λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° 언어와 μ½”λ“œ 에디터에 λ‚΄μž₯λ˜μ–΄ 있고, JSμ—λŠ” ES3λΆ€ν„° λ„μž…ν–ˆλ‹€κ³  ν•œλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄μ„ λŒ€μƒμœΌλ‘œ νŒ¨ν„΄ 맀친 κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. νŒ¨ν„΄ λ§€μΉ­ κΈ°λŠ₯μ΄λž€ νŠΉμ • νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•˜κ±°λ‚˜ μΆ”μΆœ λ˜λŠ” μΉ˜ν™˜ν•  수 μžˆλŠ” κΈ°λŠ₯을 λ§ν•œλ‹€.

예λ₯Ό λ“€μ–΄, νœ΄λŒ€ν° μ „ν™”λ²ˆν˜Έλ₯Ό ν™•μΈν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•œλ‹€κ³  κ°€μ •ν•΄λ³΄μž. ν•œκ΅­μ˜ μ „ν™”λ²ˆν˜ΈλŠ” 3개의 숫자 - 4개의 숫자 - 4개의 숫자 둜 이루어져 있고, 이λ₯Ό μ •κ·œ ν‘œν˜„μ‹ 없이 ν™•μΈν•˜λ €λ©΄ λ°˜λ³΅λ¬Έμ΄λ‚˜ 쑰건문을 ν™œμš©ν•΄ ν•œ λ¬Έμžμ”© ν™•μΈν•˜λŠ” 방법을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같이 νŒ¨ν„΄μ„ μ •μ˜ν•˜κ³  ν…ŒμŠ€νŠΈν•˜λŠ” κ²ƒμœΌλ‘œ 확인할 수 μžˆλ‹€.

const tel = '010-1234-5678'
const regExp = /^\\d{3}-\\d{4}-\\d{4}$/
regExp.test(tel) // true

μ—¬λŸ¬ 기호λ₯Ό ν˜Όν•©ν•˜κΈ°μ— 가독성이 μ’‹μ§€λŠ” μ•Šμ§€λ§Œ, 비ꡐ적 κ°„λ‹¨ν•˜λ‹€λŠ” 점은 λΆ€μ •ν•  수 μ—†λ‹€.


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

μ •κ·œμ‹ λ¦¬ν„°λŸ΄κ³Ό RegExp μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄ 생성할 수 μžˆλ‹€.

μ •κ·œμ‹ λ¦¬ν„°λŸ΄

const target = "Is this all there is?"
const regExp = /is/i
regexp.test(target) // true

RegExp μƒμ„±μž ν•¨μˆ˜

const target = "Is this all there is?"
const regExp = new RegExp(/is/i)
regexp.test(target) // true

// new RegExp(pattern[, flags])

31.3 RegExp λ©”μ„œλ“œ

31.3.1 RegExp.exec

인수둜 전달받은 λ¬Έμžμ—΄μ— λŒ€ν•΄ μ •κ·œ ν‘œν˜„μ‹μ˜ νŒ¨ν„΄μ„ 검색해 λ§€μΉ­ κ²°κ³Όλ₯Ό λ°°μ—΄λ‘œ λ°˜ν™˜ν•œλ‹€. κ²°κ³Όκ°€ μ—†λŠ” 경우 null을 λ°˜ν™˜ν•œλ‹€. g ν”Œλž˜κ·Έλ₯Ό 지정해도 첫 번째 λ§€μΉ­ 결과만 λ°˜ν™˜ν•œλ‹€.

const target = "Is this all there is?"
const regExp = /is/

regExp.exec(target)
// ['is', index: 5, input: 'Is this all there is?', groups: undefined]

31.3.2 RegExp.test

test λ©”μ„œλ“œλŠ” 인수둜 전달받은 λ¬Έμžμ—΄μ— λŒ€ν•΄ μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μ„ 검색해 λ§€μΉ­ κ²°κ³Όλ₯Ό λΆˆλ¦¬μ–Έ κ°’μœΌλ‘œ λ°˜ν™˜ν•œλ‹€.

const target = "Is this all there is?"
const regExp = /is/

regExp.test(target) // true

31.3.3 RegExp.match

match λ©”μ„œλ“œλŠ” λŒ€μƒ λ¬Έμžμ—΄κ³Ό 인수둜 전달받은 μ •κ·œ ν‘œν˜„μ‹κ³Όμ˜ λ§€μΉ­ κ²°κ³Όλ₯Ό λ°°μ—΄λ‘œ λ°˜ν™˜ν•œλ‹€. g ν”Œλž˜κ·Έλ₯Ό μ§€μ •ν•˜λ©΄ λͺ¨λ“  λ§€μΉ­ κ²°κ³Όλ₯Ό λ°°μ—΄λ‘œ λ°˜ν™˜ν•œλ‹€.

const target = "Is this all there is?"
const regExp1 = /is/
regExp1.match(target)
// ['is', index: 5, input: 'Is this all there is?', groups: undefined]

const regExp2 = /is/g
regExp2.match(target) // ["is", "is"]

31.4 ν”Œλž˜κ·Έ

νŒ¨ν„΄κ³Ό ν•¨κ»˜ μ •κ·œ ν‘œν˜„μ‹μ„ κ΅¬μ„±ν•˜λŠ” ν”Œλž˜κ·ΈλŠ” μ •κ·œ ν‘œν˜„μ‹μ˜ 검색 방식을 μ„€μ •ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€. μ˜΅μ…˜μ΄λ―€λ‘œ 선택할 수 있고, μˆœμ„œμ™€ 상관없이 ν•˜λ‚˜ μ΄μƒμ˜ ν”Œλž˜κ·Έλ₯Ό λ™μ‹œμ— μ„€μ •ν•  수 μžˆλ‹€.

ν”Œλž˜κ·Έ
의미
μ„€λͺ…

i

Ignore case

λŒ€μ†Œλ¬Έμž κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  νŒ¨ν„΄μ„ κ²€μƒ‰ν•œλ‹€.

g

Global

λŒ€μƒ λ¬Έμžμ—΄ λ‚΄ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄μ„ μ „μ—­ κ²€μƒ‰ν•œλ‹€.

m

Multi line

λ¬Έμžμ—΄μ˜ 행이 λ°”λ€Œλ”λΌλ„ νŒ¨ν„΄ 검색을 κ³„μ†ν•œλ‹€.


31.5 νŒ¨ν„΄

μ •κ·œ ν‘œν˜„μ‹μ€ νŒ¨ν„΄κ³Ό ν”Œλž˜κ·Έλ‘œ κ΅¬μ„±λœλ‹€. **νŒ¨ν„΄**은 λ¬Έμžμ—΄μ˜ μΌμ •ν•œ κ·œμΉ™μ„ ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λ©°, ν”Œλž˜κ·ΈλŠ” μ •κ·œ ν‘œν˜„μ‹μ˜ 검색 방식을 μ„€μ •ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

νŒ¨ν„΄μ€ /둜 μ—΄κ³  λ‹«μœΌλ©° λ¬Έμžμ—΄μ˜ λ”°μ˜΄ν‘œλŠ” μƒλž΅ν•œλ‹€. λ˜ν•œ νŒ¨ν„΄μ€ νŠΉλ³„ν•œ 의미λ₯Ό κ°€μ§€λŠ” λ©”νƒ€μΈμžλ‚˜ 기호둜 ν‘œν˜„ν•  수 μžˆλ‹€. μ–΄λ–€ λ¬Έμžμ—΄ λ‚΄ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ΄ μ‘΄μž¬ν•  λ•Œ β€˜μ •κ·œ ν‘œν˜„μ‹κ³Ό λ§€μΉ˜ν•œλ‹€β€™κ³  ν‘œν˜„ν•œλ‹€.

31.5.1 λ¬Έμžμ—΄ 검색

/is/ // is λ¬Έμžμ—΄κ³Ό λ§€μΉ˜ν•˜λŠ” νŒ¨ν„΄. ν”Œλž˜κ·Έκ°€ μƒλž΅λ˜μ–΄ μ •κ·œν‘œν˜„μ‹κ³Ό λ§€μΉ˜ν•œ 첫 결과만 λ°˜ν™˜ν•œλ‹€.
/is/i // is λ¬Έμžμ—΄κ³Ό λ§€μΉ˜ν•˜λŠ” νŒ¨ν„΄. λŒ€μ†Œλ¬Έμž ꡬ뢄 X
/is/g // is λ¬Έμžμ—΄κ³Ό λ§€μΉ˜ν•˜λŠ” νŒ¨ν„΄. μ „μ—­ 검색

31.5.2 μž„μ˜μ˜ λ¬Έμžμ—΄ 검색

.은 μž„μ˜μ˜ 문자 ν•œ 개λ₯Ό μ˜λ―Έν•œλ‹€. λ‚΄μš©μ€ 상관없닀.

const target = "Is this all there is?"
const regExp = /.../g // μž„μ˜μ˜ 3자리 λ¬Έμžμ—΄κ³Ό λ§€μΉ˜ν•˜λŠ” νŒ¨ν„΄. μ „μ—­ 검색

target.match(regExp)
// [ 'Is ', 'thi', 's a', 'll ', 'the', 're ', 'is?' ]

31.5.3 반볡 검색

{m,n}은 μ•ž νŒ¨ν„΄μ΄ μ΅œμ†Œ m번, μ΅œλŒ€ n번 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄μ„ μ˜λ―Έν•œλ‹€.

{n}은 μ•ž νŒ¨ν„΄μ΄ n번 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄μ„ μ˜λ―Έν•œλ‹€.

{n,}은 μ•ž νŒ¨ν„΄μ΄ μ΅œμ†Œ n번 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄μ„ μ˜λ―Έν•œλ‹€.

const target = "A AA B BB Aa Bb AAA"

const regExp = /A{1,2}/g // A κ°€ μ΅œμ†Œ 1번 μ΅œλŒ€ 2번 λ°˜λ³΅λ˜λŠ” νŒ¨ν„΄
target.match(regExp) // ['A', 'AA', 'A', 'AA', 'A']

const regExp2 = /A{2}/g // A κ°€ 2번 λ°˜λ³΅λ˜λŠ” νŒ¨ν„΄
target.match(regExp2) // ['AA', 'AA']

const regExp3 = /A{2,}/g // A κ°€ μ΅œμ†Œ 2번 λ°˜λ³΅λ˜λŠ” νŒ¨ν„΄
target.match(regExp3) // ['AA', 'AAA']

+λŠ” μ•ž νŒ¨ν„΄μ΄ μ΅œμ†Œ ν•œ 번 이상 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄μ„ μ˜λ―Έν•œλ‹€. 즉, {1,}κ³Ό κ°™λ‹€.

?λŠ” μ•ž νŒ¨ν„΄μ΄ μ΅œλŒ€ ν•œ 번(0번 포함) 이상 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄μ„ μ˜λ―Έν•œλ‹€. 즉, {0,1}κ³Ό κ°™λ‹€.

31.5.4 OR 검색

|λŠ” or의 의미λ₯Ό κ°–λŠ”λ‹€.

const target = "A AA B BB Aa Bb"
const regExp = /A|B/g // A λ˜λŠ” Bκ°€ ν¬ν•¨λœ νŒ¨ν„΄
target.match(regExp)
// ['A', 'A', 'A', 'B', 'B', 'B', 'A', 'B']

λΆ„ν•΄λ˜μ§€ μ•Šμ€ 단어 레벨둜 κ²€μƒ‰ν•˜κΈ° μœ„ν•΄ +λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•œλ‹€.

const target = "A AA B BB Aa Bb"
const regExp = /A+|B+/g // A λ˜λŠ” Bκ°€ ν¬ν•¨λœ 단어 레벨의 νŒ¨ν„΄
target.match(regExp)
// ['A', 'AA', 'B', 'BB', 'A', 'B']

|λ₯Ό κ°„λ‹¨νžˆ ν‘œν˜„ν•˜λ €λ©΄ [ ]λ₯Ό μ‚¬μš©ν•œλ‹€.

const target = "A AA B BB Aa Bb"
const regExp = /[AB]+/g // A λ˜λŠ” Bκ°€ ν¬ν•¨λœ 단어 레벨의 νŒ¨ν„΄
target.match(regExp)
// ['A', 'AA', 'B', 'BB', 'A', 'B']

λ²”μœ„λ₯Ό μ§€μ •ν•˜λ €λ©΄ []내에 -λ₯Ό μ‚¬μš©ν•œλ‹€.

const target = "A AA B BB Aa Bb 12"
const regExp = /[A-Z]+/g // A ~ Z κ°€ ν•œ 번 이상 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄ νŒ¨ν„΄
target.match(regExp)
// ['A', 'AA', 'B', 'BB', 'A', 'B']

// λŒ€λ¬Έμž μ•ŒνŒŒλ²³ [A-Z]
// μ†Œλ¬Έμž μ•ŒνŒŒλ²³ [a-z]
// 숫자 [0-9] === [\\d] <=> μˆ«μžκ°€ μ•„λ‹Œ [\\D]
// μ•ŒνŒŒλ²³, 숫자, μ–Έλ”μŠ€μ½”μ–΄ [A-Za-z0-9_] === [\\w] <==> [\\W]

31.5.5 NOT 검색

[…] λ‚΄μ˜ ^ λŠ” not의 의미λ₯Ό κ°–λŠ”λ‹€.

// [^0-9] 숫자λ₯Ό μ œμ™Έν•œ 문자 === [\\D]

31.5.6 μ‹œμž‘ μœ„μΉ˜λ‘œ 검색

[…] λ°–μ˜ ^ λŠ” λ¬Έμžμ—΄μ˜ μ‹œμž‘μ„ μ˜λ―Έν•œλ‹€.

// /^http/ http둜 μ‹œμž‘ν•˜λŠ” νŒ¨ν„΄

31.5.7 λ§ˆμ§€λ§‰ μœ„μΉ˜λ‘œ 검색

$λŠ” λ¬Έμžμ—΄μ˜ λ§ˆμ§€λ§‰μ„ μ˜λ―Έν•œλ‹€.

// /com$/ com으둜 λλ‚˜λŠ” νŒ¨ν„΄

31.6 자주 μ‚¬μš©ν•˜λŠ” μ •κ·œ ν‘œν˜„μ‹

31.6.1 νŠΉμ • λ‹¨μ–΄λ‘œ μ‹œμž‘ν•˜λŠ”μ§€ 검사

const url = '<https://example.com>';

/^https?:\\/\\//.test(url) // true
// http:// λ˜λŠ” <https://둜> μ‹œμž‘ν•˜λŠ”μ§€ 검사

31.6.2 νŠΉμ • λ‹¨μ–΄λ‘œ λλ‚˜λŠ”μ§€ 검사

const fileName = 'index.html';
/html$/.test(fileName) // true
// html둜 λλ‚˜λŠ”μ§€ 검사

31.6.3 숫자둜만 이루어진 λ¬Έμžμ—΄ 검사

const target = '12345';
/^\\d+$/.test(target) // true
// 처음과 끝이 숫자인 νŒ¨ν„΄μ΄ ν•œλ²ˆ 이상 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄

31.6.4 ν•˜λ‚˜ μ΄μƒμ˜ 곡백 검사

const target = " Hi!";
/^[\\s]+/.test(target) // true

31.6.5 μ•„μ΄λ””λ‘œ μ‚¬μš© κ°€λŠ₯ν•œμ§€ 검사

const id = 'abc123';
/^[A-Za-z0-9]{4,10}$/.test(id) // true
// μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμž λ˜λŠ” 숫자둜 이루어진 4~10자리

31.6.6 메일 μ£Όμ†Œ ν˜•μ‹μ— λ§žλŠ”μ§€ 검사

const email = "onemorebottlee@gmail.com";
/^[0-9a-zA-Z]([-_\\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\\.]?[0-9a-zA-Z])*\\.[a-zA-Z]{2,3}/.test(email)
// true

31.6.7 ν•Έλ“œν° ν˜•μ‹μ— λ§žλŠ”μ§€ 검사

const cellPhone = '010-1234-5678';
/^\\d{3}-\\d{3-4}-\\d{4}$/.test(cellPhone) // true

31.6.8 특수 문자 포함 μ—¬λΆ€ 검사

const target = 'abc#123';
(/[^A-Za-z0-9]/gi).test(target) // true

// ν˜Ήμ€
(/[\\{\\}\\[\\]\\/?.,;:|\\]*~`!^\\-_+<>@\\#$%&\\\\\\=\\(\\'\\"]/gi).test(target) // true
Previous30μž₯ DateNext32μž₯ String

Last updated 1 year ago

Was this helpful?

πŸ“š