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

πŸ’¬/γ…γ……γ…Œγ…‹γ…γ…… μ±Œλ¦°μ§€

23일차

πŸͺ…

23일차

 

Part 4. JavaScript Level up

Ch 3. μ •κ·œν‘œν˜„μ‹

 


 

Ch 3. μ •κ·œν‘œν˜„μ‹

 

 

λ‚΄μš©

 

 πŸ”— μ •κ·œμ‹ 생성 

https://heropy.blog/2018/10/28/regexp/

 

μ •κ·œν‘œν˜„μ‹, μ΄λ ‡κ²Œ μ‹œμž‘ν•˜μž!

맀일 μ“°λŠ” 것도, 가독성이 쒋은 것도 μ•„λ‹ˆμ§€λ§Œ, λͺ¨λ₯΄λ©΄ μ•ˆλ˜λŠ” μ •κ·œν‘œν˜„μ‹. μ €λŠ” μ΄λ ‡κ²Œ κ³΅λΆ€ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€! (μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό κΈ°μ€€μœΌλ‘œ μ„€λͺ…ν•©λ‹ˆλ‹€)

heropy.blog

 

# μ •κ·œν‘œν˜„μ‹ (RegExp)

 

μ •κ·œμ‹, Regular Expression

 

## μ—­ν• 

 

- 문자 검색(search)

- 문자 λŒ€μ²΄(replace)

- 문자 μΆ”μΆœ(extract)

 

## ν…ŒμŠ€νŠΈ μ‚¬μ΄νŠΈ

 

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

## μ •κ·œμ‹ 생성

// μƒμ„±μž
new RegExp('ν‘œν˜„', 'μ˜΅μ…˜')
new RegExp('[a-z]', 'gi')

// λ¦¬ν„°λŸ΄
/ν‘œν˜„/μ˜΅μ…˜
/[a-z]/gi

 

 

 πŸ”— λ©”μ†Œλ“œ 

 

## λ©”μ†Œλ“œ

λ©”μ†Œλ“œ 문법 μ„€λͺ…
test μ •κ·œμ‹.test(λ¬Έμžμ—΄) 일치 μ—¬λΆ€(Boolean) λ°˜ν™˜
match λ¬Έμžμ—΄.match(μ •κ·œμ‹) μΌμΉ˜ν•˜λŠ” 문자의 λ°°μ—΄(Array) λ°˜ν™˜
replace λ¬Έμžμ—΄.replace(μ •κ·œμ‹, λŒ€μ²΄λ¬Έμž) μΌμΉ˜ν•˜λŠ” 문자λ₯Ό λŒ€μ²΄

 

let str = `
010-1234-5678
thesecon@gmail.com
https://www.omdbapi.com?/apikey=7035c60c&s=frozen
The quick brown fox jumps over the lazy dog.
abbcccdddd
`;

// μƒμ„±μž 방식
//const regexp = new RegExp("the", "gi");

// λ¦¬ν„°λŸ΄ 방식
const regexp = /fox/gi;
console.log(regexp.test(str)); // 일치 μ—¬λΆ€(Boolen) 반횐
console.log(str.match(regexp)); // μΌμΉ˜ν•˜λŠ” 문자의 λ°°μ—΄(Array) λ°˜ν™˜
str = str.replace(regexp, "AAA"); // μΌμΉ˜ν•˜λŠ” 문자λ₯Ό λŒ€μ²΄
console.log(str);

 

 

 

 πŸ”— ν”Œλž˜κ·Έ(μ˜΅μ…˜) 

ν”Œλž˜κ·Έ μ„€λͺ…
g λͺ¨λ“  문자 일치(global) => λͺ¨λ“  문자λ₯Ό λ‹€ 찾아라!
i μ˜μ–΄ λŒ€μ†Œλ¬Έμžλ₯Ό ꡬ뢄 μ•Šκ³  일치(ignore case)
m μ—¬λŸ¬ 쀄 일치(multi line) => 각각의 쀄을 ν•˜λ‚˜μ˜ μ‹œμž‘κ³Ό 끝으둜 보겠닀.
let str = `
010-1234-5678.
thesecon@gmail.com
https://www.omdbapi.com?/apikey=7035c60c&s=frozen
The quick brown fox jumps over the lazy dog.
abbcccdddd
`;

// \: μ΄μŠ€μΌ€μ΄ν”„ λ¬Έμžλž€ \(λ°±μŠ¬λž˜μ‹œ) 기호λ₯Ό 톡해 본래의 κΈ°λŠ₯μ—μ„œ λ²—μ–΄λ‚˜ μƒνƒœκ°€ λ°”λ€ŒλŠ” λ¬Έμžμ΄λ‹€.
console.log(str.match(/\.$/gim));

 

 

 

 πŸ”— νŒ¨ν„΄(ν‘œν˜„) 

 

νŒ¨ν„΄ μ„€λͺ…
^ab 쀄(Line) μ‹œμž‘μ— μžˆλŠ” ab와 일치
ab$ 쀄(Line) 끝에 μžˆλŠ” ab와 일치
. μž„μ˜μ˜ ν•œ λ¬Έμžμ™€ 일치
a|b a λ˜λŠ” b와 일치
ab? bκ°€ μ—†κ±°λ‚˜ b와 일치
{3} 3개 연속 일치
{3,} 3개 이상 연속 일치
{3,5}
3개 이상 5개 μ΄ν•˜(3~5개) 연속 일치
[abc] a λ˜λŠ” b λ˜λŠ” c
[a-z] aλΆ€ν„° z μ‚¬μ΄μ˜ 문자 ꡬ간에 일치 (μ˜μ–΄ μ†Œλ¬Έμž)
[A-Z] AλΆ€ν„° Z μ‚¬μ΄μ˜ 문자 ꡬ간에 일치 (μ˜μ–΄ λŒ€λ¬Έμž)
[0-9] 0λΆ€ν„° 9 μ‚¬μ΄μ˜ 문자 ꡬ간에 일치 (숫자)
[κ°€-힣] κ°€λΆ€ν„° 힣 μ‚¬μ΄μ˜ 문자 ꡬ간에 일치 (ν•œκΈ€)
\w 63개 문자(Word, λŒ€μ†Œμ˜λ¬Έ52개, 숫자10개 + _)에 일치
\b 63개 λ¬Έμžμ— μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 문자 경계(Boundary)
\d 숫자(Digit)에 일치
\s 곡백(Space, Tab λ“±)에 일치
(?=) μ•žμͺ½ 일치(Lookahead)
(?<=) λ’€μͺ½ 일치(Lookbehind)
let str = `
010-1234-5678
thesecon@gmail.com
https://www.omdbapi.com?/apikey=7035c60c&s=frozen
The quick brown fox jumps over the lazy dog
abbcccdddd
d
hxyp
http://localhost:1234
동해물과_백두산이 마λ₯΄κ³  닳도둝
`;

const h = `   the hello  world   !

`;

console.log(str.match(/d$/gm));
console.log(str.match(/^t/gim));

console.log(str.match(/h..p/g));
console.log(str.match(/fox|dog/g));
console.log(str.match(/https?/g));

console.log(str.match(/d{2}/g));
console.log(str.match(/d{2,}/g));
console.log(str.match(/\b\w{2,3}\b/g));

console.log(str.match(/[fox]/g));
console.log(str.match(/[0-9]{1,}/g));
console.log(str.match(/[κ°€-힣]{1,}/g));

console.log(str.match(/\w/g));
console.log(str.match(/\bf\w{1,}\b/g));
console.log(str.match(/\d{1,}/g));
console.log(h.replace(/\s/g, ""));

console.log(str.match(/.{1,}(?=@)/g));
console.log(str.match(/(?<=@).{1,}/g));

 

 

'πŸ’¬ > γ…γ……γ…Œγ…‹γ…γ…… μ±Œλ¦°μ§€' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

25일차  (0) 2022.03.15
24일차  (0) 2022.03.07
22일차  (0) 2022.02.25
21일차  (0) 2022.02.20
20일차  (0) 2022.02.14