31μž₯. RegExp(μ •κ·œ ν‘œν˜„μ‹)

2025. 8. 27. 15:03Β·πŸ“™ λͺ¨λ”₯λ‹€

λͺ¨λ”₯λ‹€

 

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


μΌμ •ν•œ νŒ¨ν„΄μ„ κ°€μ§„ λ¬Έμžμ—΄μ˜ 집합을 ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν˜•μ‹ μ–Έμ–΄(formal language)λ‹€.

μ •κ·œ ν‘œν˜„μ‹μ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 고유 문법이 μ•„λ‹ˆλ©°, λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° 언어와 μ½”λ“œ 에디터에 λ‚΄μž₯λ˜μ–΄ μžˆλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” νŽ„(Perl)의 μ •κ·œ ν‘œν˜„μ‹ 문법을 ES3λΆ€ν„° λ„μž…ν–ˆλ‹€.

 

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


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

 

βœ… RegExp λ©”μ„œλ“œ


RegExp.prototype.exec

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

λ§€μΉ­ κ²°κ³Όκ°€ μ—†λŠ” 경우 null을 λ°˜ν™˜.

 

exec λ©”μ„œλ“œλŠ” λ¬Έμžμ—΄ λ‚΄μ˜ λͺ¨λ“  νŒ¨ν„΄μ„  κ²€μƒ‰ν•˜μ—¬ g ν”Œλž˜κ·Έλ₯Ό 지정해도 첫 번째 λ§€μΉ­ 결과만 λ°˜ν™˜ν•¨

 

RegExp.prototype.test

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

 

String.prototype.match

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

g ν”Œλž˜κ·Έκ°€ μ§€μ •λ˜λ©΄ λͺ¨λ“  λ§€μΉ­ κ²°κ³Όλ₯Ό λ°°μ—΄λ‘œ λ°˜ν™˜ν•¨

 

βœ… ν”Œλž˜κ·Έ


i -> Ignore case -> λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜μ§€ μ•Šκ³  νŒ¨ν„΄μ„ 검색

g -> Global -> λŒ€μƒ λ¬Έμžμ—΄ λ‚΄μ—μ„œ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄μ„ μ „μ—­ 검색

m -> Multi line -> λ¬Έμžμ—΄μ˜ 행이 λ°”λ€Œλ”λΌλ„ νŒ¨ν„΄ 검색을 계속함

 

βœ… νŒ¨ν„΄


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

.은 μž„μ˜μ˜ 문자 ν•œ 개λ₯Ό 의미

const regExp = /.../g;

 

2. 반볡 검색

{m,n}은 μ΅œμ†Œ m번, μ΅œλŒ€ n번 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄μ„ 의미

const regExp = /A{1,2}/g;

 

{n}은 {n,n}κ³Ό κ°™λ‹€. (n번 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄)

{n,}은 μ΅œμ†Œ n번 이상 λ°˜λ³΅λ˜λŠ” λ¬Έμžμ—΄

 

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

const regExp = /A+/g;

 

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

const regExp = /colou?r/g;

(uλŠ” μžˆμ–΄λ„ 되고 없어도 됨)

 

3. OR 검색

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

const regExp = /A|B/g;

 

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

const regExp = /A+|B+/g;

 

[]λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨νžˆ ν‘œν˜„ν•  수 μžˆλ‹€. [] λ‚΄μ˜ λ¬ΈμžλŠ” or둜 λ™μž‘ν•œλ‹€. κ·Έ 뒀에 +λ₯Ό μƒμš”ν•˜λ©΄ μ•žμ„  νŒ¨ν„΄γ…‡λ₯΄ ν•œ 번 이상 λ°˜λ³΅ν•œλ‹€.

const regExp = /[AB]+/g;

 

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

const regExp = /[A-Z]+/g;

 

/dλŠ” [0-9]와 κ°™λ‹€. /DλŠ” /d와 λ°˜λŒ€λ‘œ λ™μž‘ν•œλ‹€. 즉 /DλŠ” μˆ«μžκ°€ μ•„λ‹Œ 문자λ₯Ό μ˜λ―Έν•œλ‹€.

 

/wλŠ” μ•ŒνŒŒλ²³, 숫자, μ–Έλ”μŠ€μ½”μ–΄λ₯Ό μ˜λ―Έν•œλ‹€. 즉 [A-Za-z0-9_]와 κ°™λ‹€. /WλŠ” /w와 λ°˜λŒ€λ‘œ λ™μž‘ν•œλ‹€.

즉 /WλŠ” μ•ŒνŒŒλ²³, 숫자, μ–Έλ”μŠ€μ½”μ–΄κ°€ μ•„λ‹Œ 문자λ₯Ό μ˜λ―Έν•œλ‹€.

 

4. NOT 검색

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

 

5. μ‹œμž‘ μœ„μΉ˜λ‘œ 검색

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

 

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

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

 

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


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

/^https?:\/\//.test(url);

 

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

/html$/.test(fileName);

 

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

/^/d+$/.test(target);

 

ν•˜λ‚˜ μ΄μƒμ˜ 곡백으둜 μ‹œμž‘ν•˜λŠ”μ§€ 검사

/^[/s]+/.test(target);

 

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

/^[A-Za-z0-9]{4,10}$/.test(id);

 

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

/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$\.test(email);

 

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

/^\d{3}-\d{3,4}-\d{4}$/.test(cellphone);

 

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

(/[^A-Za-z0-9]/gi).test(target);

 

특수 문자λ₯Ό μ œκ±°ν•  λ•ŒλŠ” String.prototype.replace λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.

target.replace(/[^A-Za-z0-9]/gi, '');

'πŸ“™ λͺ¨λ”₯λ‹€' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

23μž₯. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ(LexicalEnvironment와 VariableEnvironment)  (1) 2025.05.20
19μž₯. prototypeκ³Ό __proto__의 차이?  (0) 2025.05.06
17μž₯. μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성  (0) 2025.02.28
16μž₯. ν”„λ‘œνΌν‹° μ–΄νŠΈλ¦¬λ·°νŠΈ  (0) 2025.02.28
'πŸ“™ λͺ¨λ”₯λ‹€' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • 23μž₯. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ(LexicalEnvironment와 VariableEnvironment)
  • 19μž₯. prototypeκ³Ό __proto__의 차이?
  • 17μž₯. μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성
  • 16μž₯. ν”„λ‘œνΌν‹° μ–΄νŠΈλ¦¬λ·°νŠΈ
j2yonghwa
j2yonghwa
Trying to be a fullstack developer πŸš€
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기 (156)
      • ⏰ Daily WakaTime (1)
      • πŸ–οΈ λ…Έλ§ˆλ“œμ½”λ” (2)
      • 🍺 Dev Setup (3)
      • πŸ”­ Tech Info (1)
      • 🚫 Error (1)
      • πŸ“‚ 라이브러리 (23)
      • ♣️ Next.js 14 (10)
      • ♠️ Next.js 12 (20)
      • πŸ›Έ React Native (12)
      • πŸ¦‹ TypeScript (1)
      • 🐍 Python (2)
      • 🌊 TailwindCSS (4)
      • 🧩 SQL (25)
      • πŸ’Ž Prisma (5)
      • 🌱 MongoDB (4)
      • 🎯 Redis (1)
      • 🧬 GraphQL (2)
      • πŸ”₯ Firebase (7)
      • πŸ’Έ Third-Party Services (2)
      • πŸ•ΈοΈ Web (1)
      • πŸ† μ½”λ”©ν…ŒμŠ€νŠΈ (23)
      • πŸ“™ λͺ¨λ”₯λ‹€ (5)
      • πŸ“— μ½”ν…Œ ν•©κ²©μž 되기 -JS- (0)
      • πŸ“˜ ν΄λ¦°μ½”λ“œ (0)
      • 🍯 κΏ€νŒ 🐝 (1)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

    • κΉƒν—™
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    react router
    API
    dev setup
    λͺ¨λ”₯λ‹€
    Prisma
    Python
    tailwindcss
    Next.js
    React Native
    SQL
    MySQL
    μ½”λ”©ν…ŒμŠ€νŠΈ μž…λ¬Έ
    PostgreSQL
    라이브러리
    next.js 14
    μžλ°”μŠ€ν¬λ¦½νŠΈ
    mongoDB
    0레벨
    Firebase
    next.js 12
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
j2yonghwa
31μž₯. RegExp(μ •κ·œ ν‘œν˜„μ‹)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”