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

JavaScript

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

좜처: MDN Web Docs

 

 

 

 

 

μ •κ·œν‘œν˜„μ‹ (μ •κ·œμ‹) - Regular expression

μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄μ— λ‚˜νƒ€λ‚˜λŠ” νŠΉμ • 문자 μ‘°ν•©κ³Ό λŒ€μ‘μ‹œν‚€κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” νŒ¨ν„΄μœΌλ‘œ, μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ •κ·œ ν‘œν˜„μ‹ λ˜ν•œ 객체이닀. 이 νŒ¨ν„΄λ“€μ€ RegExp의 exec,  test λ©”μ†Œλ“œμ™€ String의 match, replace, search, split λ©”μ†Œλ“œμ™€ ν•¨κ»˜ 쓰인닀.

 

 

 

 

 

 

μ •κ·œ ν‘œν˜„μ‹μ„ λ§Œλ“œλŠ” 방법

 

1. μ •κ·œμ‹ λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜λŠ” 방법 ( μ •κ·œμ‹μ΄ κ°’(=νŒ¨ν„΄)이 λ³€ν•˜μ§€ μ•ŠλŠ” μƒμˆ˜μΌ λ•Œ μ‚¬μš©ν•˜λŠ” 것을 μΆ”μ²œ )

 

μŠ¬λž˜μ‹œ( / )둜 κ°μ‹ΈλŠ” νŒ¨ν„΄μ„ μ‚¬μš©ν•˜μ—¬ λ§Œλ“œλŠ” 방법이닀. μ •κ·œμ‹ λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜κ²Œ 되면 μŠ€ν¬λ¦½νŠΈκ°€ λΆˆλŸ¬μ™€μ§ˆ λ•Œ 컴파일 λœλ‹€.

var re = /ab+c/;

 

 

 

 

 

 

2. RegExp 객체의 μƒμ„±μž ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 방법 ( μ •κ·œμ‹μ˜ κ°’(=νŒ¨ν„΄)이 λ³€μˆ˜μΌ λ•Œ μ‚¬μš©ν•˜λŠ” 것을 μΆ”μ²œ )

 

RegExp 객체의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•œλ‹€. μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ •κ·œμ‹μ΄ μ‹€ν–‰ μ‹œμ (=λŸ°νƒ€μž„)에 컴파일 λœλ‹€.

μ •κ·œμ‹μ˜ νŒ¨ν„΄μ΄ 변경될 κ°€λŠ₯성이 μžˆκ±°λ‚˜ μ‚¬μš©μžμ˜ μž…λ ₯ κ°’κ³Ό 같이 λ³€μˆ˜μ˜ νŒ¨ν„΄μ„ 가져와야 ν•˜λŠ” 경우, μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

var re = new RegExp("ab+c");

 

 

 

 

 

 

 

 

 

μ •κ·œμ‹ νŒ¨ν„΄ μž‘μ„±

 

1. λ‹¨μˆœ νŒ¨ν„΄ μ‚¬μš©ν•˜κΈ°

 

λ‹¨μˆœ νŒ¨ν„΄μ€ λ¬Έμžμ—΄μ„ μžˆλŠ” κ·ΈλŒ€λ‘œ λŒ€μ‘μ‹œν‚¬ λ•Œ μ‚¬μš©λœλ‹€.

// μ•„λž˜ νŒ¨ν„΄μ˜ 경우, λ¬Έμžμ—΄μ΄ μ •ν™•νžˆ 'abc'μ—¬μ•Ό ν•œλ‹€.
/abc/

var a = 'Hi, do you know your abc?' // 적용됨.
var b = 'Grab crab' // μ μš©λ˜μ§€ μ•ŠμŒ. (μ •ν™•ν•œ 'abc'κ°€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—)

 

 

 

2. 특수 문자 μ‚¬μš©ν•˜κΈ°

 

ν•˜λ‚˜ μ΄μƒμ˜ 'b'λ₯Ό μ°Ύκ±°λ‚˜, 곡백 문자 μ°ΎκΈ° λ“± 직접적인 일치 μ΄μƒμ˜ 탐색이 ν•„μš”ν•œ 경우 특수문자λ₯Ό μ‚¬μš©ν•œλ‹€.

 

문자 / μ‘°ν•© λ¬Έμ„œ
\, ., \cX, \d, \D, \f, \n, \r, \s, \S, \t, \v, \w, \W, \0, \xhh, \uhhhh, \uhhhhh, [\b] 문자 클래슀 (en-US)
^, $, x(?=y), x(?!y), (?<=y)x, (?<!y)x, \b, \B μ–΄μ„œμ…˜
(x), (?:x), (?<Name>x), x|y, [xyz], [^xyz], \Number κ·Έλ£Ήκ³Ό λ²”μœ„
*, +, ?, x{n}, x{n,}, x{n,m} μˆ˜λŸ‰μž (en-US)
\p{UnicodeProperty}, \P{UnicodeProperty} μœ λ‹ˆμ½”λ“œ 속성 μ΄μŠ€μΌ€μ΄ν”„ (en-US)

좜처 - MDN

 

 

 

 

 

- μ΄μŠ€μΌ€μ΄ν•‘

특수 문자λ₯Ό μžˆλŠ” κ·ΈλŒ€λ‘œ 탐색해야 ν•˜λŠ” 경우, 특수 문자 μ•žμ— μ—­μŠ¬λž˜μ‹œ( \ )λ₯Ό λ°°μΉ˜ν•΄μ„œ μ΄μŠ€μΌ€μ΄ν”„ ν•΄μ•Ό ν•œλ‹€. μ—­μŠ¬λž˜μ‹œλ₯Ό μ΄μš©ν•˜μ—¬ μ΄μŠ€μΌ€μ΄ν”„ν•˜λ©΄, νŠΉμˆ˜λ¬Έμžκ°€ μ•„λ‹Œ 문자 λ¦¬ν„°λŸ΄λ‘œ μ·¨κΈ‰ν•œλ‹€.

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') // $&은 μΌμΉ˜ν•œ λ¬Έμžμ—΄ 전체λ₯Ό 의미
}

 

 

 

 

 

- κ΄„ν˜Έ μ‚¬μš©ν•˜κΈ°

μ •κ·œ ν‘œν˜„μ‹μ˜ 아무 λΆ€λΆ„μ΄λ‚˜ κ΄„ν˜Έλ‘œ κ°μ‹Έκ²Œ 되면, κ·Έ λΆ€λΆ„κ³Ό μΌμΉ˜ν•˜λŠ” λΆ€λΆ„ λ¬Έμžμ—΄μ„ κΈ°μ–΅ν•˜κ²Œ λœλ‹€. κΈ°μ–΅ν•œ λΆ€λΆ„ λ¬Έμžμ—΄μ€ λΆˆλŸ¬μ™€μ„œ μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.