javascript

[1213] μ •κ·œ ν‘œν˜„μ‹

λ¬Έμ•΅ 2021. 12. 13. 23:47

πŸ“š μ •κ·œν‘œν˜„식

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

νŠΉμ • νŒ¨ν„΄μ˜ λ¬Έμžμ—΄μ„ μ°Ύμ•„μ£ΌλŠ” ν‘œν˜„λ°©μ‹!

λ‚΄κ°€ 찾고자 ν•˜λŠ” νŒ¨ν„΄μ— λ§€μΉ­λ˜λŠ” λ¬Έμžμ—΄μ„ μ°Ύμ•„μ€€λ‹€
μ •κ·œ ν‘œν˜„μ‹κ³Ό λ§€μ„œλ“œλ₯Ό 적절히 μ΄μš©ν•΄ λ¬Έμžμ—΄μ„ μ›ν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ‘°μž‘ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€

 

 

- μ˜ˆμ‹œ 

"2021-12-13" 

μ΄λΌλŠ” λ¬Έμžμ—΄μ€ "4개의 숫자, - ,2개의 숫자, - ,2개의 숫자"둜 κ΅¬μ„±λ˜μ–΄ 있음.

λ§Œμ•½ μœ„μ™€ 같은 λ‚ μ§œ ν˜•μ‹λ§Œ μ°Ύμ•„λ‚΄κ³  μ‹Άλ‹€λ©΄? μ •κ·œ ν‘œν˜„μ‹μ„ μ΄μš©ν•˜λ©΄ 됨

이걸 μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ ν•˜λ©΄ /\d{4}-\d{2}-\d{2}/ 라고 함
➑ \d 라고 ν•˜λŠ”κ±΄ μˆ«μžμž„μ„ μ˜λ―Έν•˜κ³ , {} μ•ˆμ—λŠ” κ·Έ 숫자의 κ°―μˆ˜κ°€ 듀어감

μš”κ±Έ μ΄μš©ν•˜λ©΄

const context = /\d{4}-\d{2}-\d{2}/;

context.test('010-0000-0000') // false
context.test('2022-01-01') // true

이런 μ‹μœΌλ‘œ ! 이용이 κ°€λŠ₯ν•˜λ‹€.

 

 

πŸ’‘ μ •κ·œν‘œν˜„μ‹ μ‚¬μš©λ°©λ²•

 

 1. ν˜•μ‹

    /νŒ¨ν„΄/ν”Œλž˜κ·Έ 

- μŠ¬λž˜μ‹œ(/) μ‚¬μ΄μ—λŠ” λ§€μΉ­μ‹œν‚¬ "νŒ¨ν„΄"을 써쀀닀.
- μŠ¬λž˜μ‹œ(/) λ‹€μŒμ—λŠ” μ˜΅μ…˜μ„ μ„€μ •ν•˜λŠ” "ν”Œλž˜κ·Έ"λ₯Ό 써쀀닀.
  (ν”Œλž˜κ·ΈλŠ” ν•΄λ‹Ήν•˜λŠ” 처음 ν•˜λ‚˜λ§Œ 찾을지, μ‹Ή λ‹€ 찾을지 등을 μ„€μ •ν•˜λŠ” μ˜΅μ…˜μ΄λΌκ³  보면 됨)

 

 

 

2. νŒ¨ν„΄ 정리 

 

1️⃣ 맀칭 νŒ¨ν„΄

: 문자,숫자,κΈ°ν˜Έλ“±

맀칭 νŒ¨ν„΄ 뜻 μ˜ˆμ‹œ
a-zA-Z μ˜μ–΄ μ•ŒνŒŒλ²³ (-으둜 λ²”μœ„ 지정)  
γ„±-γ…Žκ°€-힣 ν•œκΈ€ 문자 (-으둜 λ²”μœ„ 지정)  
0-9 숫자 (-으둜 λ²”μœ„ 지정)  
. λͺ¨λ“  문자
(숫자,ν•œκΈ€,μ˜μ–΄,특수기호,곡백 λͺ¨λ‘
단, μ€„λ°”κΏˆx)
 
\d 숫자  
\D μˆ«μžκ°€ μ•„λ‹Œκ±°  
\w μ˜μ–΄ μ•ŒνŒŒλ²³, 숫자,언더바(_)  
\W 단어 λ¬Έμžκ°€ μ•„λ‹Œ 문자.  [^A-Za-z0-9_] μ™€ 동일.

예λ₯Ό λ“€μ–΄, 
/\W/ λ˜λŠ” /[^A-Za-z0-9_]/
λŠ” "50%."의 '%' λž‘ 같은 의미.
\s 슀페이슀 (곡백)  
\S 슀페이슀(곡백)κ°€ μ•„λ‹Œ 것  
| OR  

 

 

 

2️⃣ 검색 νŒ¨ν„΄

: and, or, StartWith λ“±λ“± λ‹€μ–‘ν•˜κ²Œ μ‘°ν•© κ°€λŠ₯

κ²€μƒ‰νŒ¨ν„΄ 뜻 μ˜ˆμ‹œ
[문자] λ¬Έμžμ…‹(Character set)이라고 함.
κ΄„ν˜Έμ•ˆμ˜ λͺ¨λ“  문자 가리킴
νŒ¨ν„΄ [a-d] λŠ” νŒ¨ν„΄ [abcd] μ™€
λ˜‘κ°™μ΄ λ™μž‘
"brisket"의 'b' 에 일치.
"city"의 'c' 에 일치.

νŒ¨ν„΄ 
/[a-z.]+/ μ™€
 
/[\w.]+/ λŠ”
"test.i.ng" 전체 λ¬Έμžμ—΄μ΄ 일치.


[^문자] κ΄„ν˜Έμ•ˆμ˜ 문자 μ œμ™Έν•œ λ‚˜λ¨Έμ§€ [^abc] = [^a-c] 같은 의미.

"brisket"의 'r', "chop."의 'h' 에 λŒ€μ‘λ¨
^λ¬Έμžμ—΄ νŠΉμ • λ¬Έμžμ—΄λ‘œ μ‹œμž‘(κ΄„ν˜Έ μ—†μŒ 주의!)  
λ¬Έμžμ—΄$ νŠΉμ • λ¬Έμžμ—΄λ‘œ 끝남  
 ( )  κ·Έλ£Ή 검색 및 λΆ„λ₯˜(matchλ©”μ„œλ“œμ—μ„œ κ·Έλ£Ήλ³„λ‘œ λ¬Άμ–΄μ€Œ)  
(?: νŒ¨ν„΄) κ·Έλ£Ή 검색(λΆ„λ₯˜X)  
\b λ‹¨μ–΄μ˜ 처음/끝  
 \B λ‹¨μ–΄μ˜ 처음/끝이 μ•„λ‹˜  
     

 

 

 

3️⃣ 갯수(μˆ˜λŸ‰) νŒ¨ν„΄

: νŠΉμ • νŒ¨ν„΄μ΄ λͺ‡λ²ˆ λ°˜λ³΅λ˜λŠ”μ§€λ„ 필터링 κ°€λŠ₯

기호 뜻 μ˜ˆμ‹œ
? μ΅œλŒ€ ν•œκ°œ (μ—†κ±°λ‚˜ ν•œκ°œ) {0,1} κ³Ό 같은 의미
* μ—†κ±°λ‚˜ 있음  
+ μ΅œμ†Œ ν•œκ°œ (ν•œκ°œκ±°λ‚˜ κ·Έ 이상)  
{n} n개  
{n,} μ΅œμ†Œ n개 이상  
{n,m} μ΅œμ†Œ n개 이상, μ΅œλŒ€ m개 μ΄ν•˜  

 

 

 

4️⃣ ν”Œλž˜κ·Έ

: λ™μ‹œμ— μ—¬λŸ¬κ°œ μ‚¬μš©λ„ κ°€λŠ₯ (gi , gm λ“±)

ν”Œλž˜κ·Έ 뜻 μ˜ˆμ‹œ
g λͺ¨λ“  문자 검색 
(μ–˜ μ•ˆμ¨μ£Όλ©΄ λ§€μΉ­λ˜λŠ” 첫문자만 검색함)
 
i λŒ€μ†Œλ¬Έμž ꡬ뢄 μ•ˆν•¨  
m μ—¬λŸ¬ ν–‰μ˜ λ¬Έμžμ—΄μ— λŒ€ν•΄ 검색  

 

 

 

5️⃣ μ •κ·œν‘œν˜„μ‹ μ£Όμš” λ§€μ„œλ“œ

: 이 λ§€μ„œλ“œλ“€μ„ μ΄μš©ν•΄μ„œ λ§€μΉ­λ˜λŠ” λ¬Έμžμ—΄μ„ μΆ”μΆœν•˜κ±°λ‚˜ λ³€ν™˜ν•΄μ„œ

μ›ν•˜λŠ”λŒ€λ‘œ λ¬Έμžμ—΄ μ‘°μž‘μ΄ κ°€λŠ₯

λ§€μ„œλ“œ 뜻 μ˜ˆμ‹œ
("λ¬Έμžμ—΄").match(/μ •κ·œμ‹/ν”Œλž˜κ·Έ) λ§€μΉ­λ˜λŠ” ν•­λͺ©μ„ λ°°μ—΄λ‘œ λ°˜ν™˜  
("λ¬Έμžμ—΄").replace(/μ •κ·œμ‹/,"λŒ€μ²΄λ¬Έμžμ—΄") λ§€μΉ­λ˜λŠ” ν•­λͺ©μ„ "λŒ€μ²΄ λ¬Έμžμ—΄"둜 λ³€ν™˜  
("λ¬Έμžμ—΄").split(μ •κ·œμ‹) λ§€μΉ­λ˜λŠ” ν•­λͺ©μœΌλ‘œ μͺΌκ°œμ„œ λ°°μ—΄λ‘œ λ°˜ν™˜  
(μ •κ·œμ‹).test("λ¬Έμžμ—΄") "λ¬Έμžμ—΄"이 "μ •κ·œν‘œν˜„μ‹"κ³Ό 맀칭되면
true, μ•„λ‹ˆλ©΄ falseλ°˜ν™˜
 
(μ •κ·œμ‹).exec("λ¬Έμžμ—΄") λ§€μΉ­λ˜λŠ” ν•­λͺ©μ˜
"무쑰건 첫번째 결과만" λ°˜ν™˜
 

 

 

 

 

 

 

μ°Έκ³  :

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions#%ED%8A%B9%EC%88%98_%EB%AC%B8%EC%9E%90_%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

μ •κ·œ ν‘œν˜„μ‹ - JavaScript | MDN

μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄μ— λ‚˜νƒ€λŠ” νŠΉμ • 문자 μ‘°ν•©κ³Ό λŒ€μ‘μ‹œν‚€κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ, μ •κ·œ ν‘œν˜„μ‹ λ˜ν•œ κ°μ²΄μž…λ‹ˆλ‹€.  이 νŒ¨ν„΄λ“€μ€ RegExp의 exec λ©”μ†Œλ“œμ™€ test λ©”μ†Œλ“œ  ,

developer.mozilla.org

https://curryyou.tistory.com/234

 

[μžλ°”μŠ€ν¬λ¦½νŠΈ] μ •κ·œν‘œν˜„μ‹(Regular Expression) 기초/κΈ°λ³Έ 쉽고 μƒμ„Έν•œ μ‚¬μš© 방법 정리(μƒ˜ν”Œ 예제 μ½”

# μ •κ·œν‘œν˜„μ‹μ΄λž€?(Regular Expression: Regex) μ •κ·œν‘œν˜„μ‹μ€ "νŠΉμ • νŒ¨ν„΄μ˜ λ¬Έμžμ—΄"을 μ°ΎκΈ° μœ„ν•œ ν‘œν˜„ λ°©μ‹μž…λ‹ˆλ‹€. (이런걸 ν˜•μ‹ μ–Έμ–΄, formal languange라고 ν•©λ‹ˆλ‹€.) μ •κ·œν‘œν˜„μ‹μ„ μ΄μš©ν•˜λ©΄, νŠΉμ • νŒ¨ν„΄μ— 맀

curryyou.tistory.com

 

 

 

 

λ°˜μ‘ν˜•