λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

[ JavaScript / μ •κ·œν‘œν˜„μ‹ ] μžλ°”μŠ€ν¬λ¦½νŠΈ μ •κ·œν‘œν˜„μ‹ 정리 <2>

 

1편 참고

 

[ JavaScript / μ •κ·œν‘œν˜„μ‹ ] μžλ°”μŠ€ν¬λ¦½νŠΈ μ •κ·œν‘œν˜„μ‹ 정리 <1>

좜처: MDN Web Docs μ •κ·œν‘œν˜„μ‹ (μ •κ·œμ‹) - Regular expression μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄μ— λ‚˜νƒ€λ‚˜λŠ” νŠΉμ • 문자 μ‘°ν•©κ³Ό λŒ€μ‘μ‹œν‚€κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” νŒ¨ν„΄μœΌλ‘œ, μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ •κ·œ ν‘œν˜„μ‹ λ˜ν•œ 객체이닀. 이

d-dual.tistory.com

 

 

 

μ •κ·œν‘œν˜„μ‹ 1νŽΈμ—μ„œλŠ” MDNμ—μ„œ μ„€λͺ…ν•˜λŠ” μ •κ·œν‘œν˜„μ‹μ— λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λ‹€.

2νŽΈμ—μ„œλŠ” μ‹€μ œ μ‚¬μš© 방법 및 ν™œμš©λ²•μ— λŒ€ν•΄ 정리해 보렀고 ν•œλ‹€.

 

 

 

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

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

 

 

 

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

μ •κ·œ ν‘œν˜„μ‹ λ¦¬ν„°λŸ΄μ€ μ•„λž˜μ™€ 같이 ν‘œν˜„ν•œλ‹€.

/pattern/i

/ : μ‹œμž‘κΈ°ν˜Έ

pattern : νŒ¨ν„΄

/ : μ’…λ£Œ 기호

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

 

 

 

 

 μ˜ˆμ‹œ

const text = 'Hi, My name is...';

// νŒ¨ν„΄: is
// ν”Œλž˜κ·Έ: i => λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜μ§€ μ•Šκ³  κ²€μƒ‰ν•œλ‹€.
const regexp = /is/i;

regexp.test(text); // true

 

 

 

 

ν”Œλž˜κ·Έ

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

ν”Œλž˜κ·Έ 의미 μ„€λͺ…
i Ignore case λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜μ§€ μ•Šκ³  νŒ¨ν„΄μ„ κ²€μƒ‰ν•œλ‹€.
g Global λŒ€μƒ λ¬Έμžμ—΄ λ‚΄μ—μ„œ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄μ„ μ „μ—­μœΌλ‘œ νƒμƒ‰ν•œλ‹€.
m Multi line λ¬Έμžμ—΄μ˜ 행이 λ°”λ€Œλ”λΌλ„ νŒ¨ν„΄ 검색을 κ³„μ†ν•œλ‹€.
d Has Indices λΆ€λΆ„ λ¬Έμžμ—΄ μΌμΉ˜μ— λŒ€ν•΄ 인덱슀λ₯Ό 생성.
s Dot All κ°œν–‰ λ¬Έμžκ°€ .κ³Ό μΌμΉ˜ν•œλ‹€. (.이 쀄 λ°”κΏˆμ— μΌμΉ˜ν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.)
u Unicode νŒ¨ν„΄μ„ μœ λ‹ˆμ½”λ“œ μ½”λ“œ 포인트의 μ‹œν€€μŠ€λ‘œ κ°„μ£Όν•œλ‹€.
y Sticky μ ‘μ°© 탐색. λŒ€μƒ λ¬Έμžμ—΄μ˜ ν˜„μž¬ μœ„μΉ˜μ—μ„œ 탐색을 μ‹œμž‘ν•œλ‹€. (검색이 μ ‘μ°© λ˜μ–΄μžˆλŠ”μ§€ λ‚˜νƒ€λ‚Έλ‹€.)

 

 

 

 

예제 - MDN

// μ „ν™”λ²ˆν˜Έ ν˜•μ‹μ— λ§žλŠ” μ •κ·œ ν‘œν˜„μ‹ 생성
// xxx-xxxx-xxxx (숫자)

const form = document.querySelector('#form')
const input = document.querySelector('#phone')
const output = document.querySelector('#output')

const re = /^(?:\d{3}|\(\d{3}\))([-\/\.])\d{4}\1\d{4}$/

function testInfo(phoneInput) {
  const ok = re.exec(phoneInput.value)

  if (!ok) {
    output.textContent = `ν˜•μ‹μ— λ§žμ§€ μ•ŠλŠ” μ „ν™”λ²ˆν˜Έμž…λ‹ˆλ‹€. (${phoneInput.value})`
  } else {
    output.textContent = `κ°μ‚¬ν•©λ‹ˆλ‹€. μ „ν™”λ²ˆν˜ΈλŠ” ${ok[0]} μž…λ‹ˆλ‹€.`
  }
}

form.addEventListener('submit', (event) => {
  event.preventDefault()
  testInfo(input)
})

 

 

 

 

 

 

 

μ°Έκ³ )

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive - 이웅λͺ¨ (μœ„ν‚€λΆμŠ€)

MDN RegExp