[ TIL ] [ μ •κ·œκ³Όμ • : 주특기주차 ] μ •κ·œ ν‘œν˜„μ‹ λ§Œλ“€κΈ°

2023. 9. 10. 04:03ㆍ0. TiL ( Today I Learned )

 

이번 LV κ²Œμ‹œνŒ λ§Œλ“€κΈ°λ₯Ό ν•˜λ©΄μ„œ , λ‘œκ·ΈμΈμ„ κ΅¬ν˜„ν• λ•Œμ—  μ•„λž˜μ˜ 쑰건값을 ν™œμš© ν•˜μ—¬μ•Ό ν•œλ‹€λŠ” 쑰건값이 μžˆμ—ˆλ‹€.

api λͺ…μ„Έμ„œλ§Œ μ‹ κ²½μ¨μ„œ λ§Œλ“€λ‹€κ°€ 쑰건값이 μžˆλ‹€λŠ”κ±Έ λͺ¨λ₯΄κ³  μžˆλ‹€κ°€ λ’€λŠ¦κ²Œ ν™•μΈν•΄μ„œ μ •κ·œμ‹μœΌλ‘œ 아이디/λΉ„λ°€λ²ˆν˜Έλ₯Ό λ„£μ–΄ μ²˜λ¦¬ν•˜λŠ” λ°©λ²•μœΌλ‘œ 

ν™•μΈν•΄μ„œ μ½”λ“œλ₯Ό μˆ˜μ •ν–ˆλ‹€.


λ‹‰λ„€μž„μ€ μ΅œμ†Œ 3자 이상, μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμž(a~z, A~Z), 숫자(0~9)둜 κ΅¬μ„±ν•˜κΈ°

λΉ„λ°€λ²ˆν˜ΈλŠ” μ΅œμ†Œ 4자 이상이며, λ‹‰λ„€μž„κ³Ό 같은 값이 ν¬ν•¨λœ 경우 νšŒμ›κ°€μž…μ— μ‹€νŒ¨λ‘œ λ§Œλ“€κΈ°


λ¨Όμ €, μ •κ·œν‘œν˜„μ‹((Regular Expression)에 λŒ€ν•΄ μ•Œμ•„λ΄€λ‹€.

μ •κ·œν‘œν˜„μ‹μ€ λ¬Έμžμ—΄μ—μ„œ νŠΉμ • λ‚΄μš©μ„ μ°Ύκ±°λ‚˜ λŒ€μ²΄ λ˜λŠ” λ°œμ·Œν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€.
예λ₯Ό λ“€μ–΄ νšŒμ›κ°€μž… ν™”λ©΄μ—μ„œ μ‚¬μš©μžλ‘œ λΆ€ν„° μž…λ ₯ λ°›λŠ” μ „ν™”λ²ˆν˜Έκ°€ μœ νš¨ν•œμ§€ μ²΄ν¬ν•  ν•„μš”κ°€ μžˆλ‹€. μ΄λ•Œ μ •κ·œν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜λ©΄ κ°„λ‹¨νžˆ μ²˜λ¦¬ν•  μˆ˜ μžˆλ‹€.

반볡문과 쑰건문을 μ‚¬μš©ν•œ λ³΅μž‘ν•œ μ½”λ“œλ„ μ •κ·œν‘œν˜„μ‹μ„ μ΄μš©ν•˜λ©΄ 맀우 κ°„λ‹¨ν•˜κ²Œ ν‘œν˜„ν•  수 μžˆλ‹€.

ν•˜μ§€λ§Œ! μ •κ·œν‘œν˜„μ‹μ€ μ£Όμ„μ΄λ‚˜ 곡백을 ν—ˆμš©ν•˜μ§€ μ•Šκ³  μ—¬λŸ¬κ°€μ§€ 기호λ₯Ό ν˜Όν•©ν•˜μ—¬ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 가독성이 μ’‹μ§€ μ•Šλ‹€λŠ” λ¬Έμ œκ°€ μžˆλ‹€.

 

좜처 : https://poiemaweb.com/js-regexp

 

RegExp | PoiemaWeb

μ •κ·œν‘œν˜„μ‹(Regular Expression)은 λ¬Έμžμ—΄μ—μ„œ νŠΉμ • λ‚΄μš©μ„ μ°Ύκ±°λ‚˜ λŒ€μ²΄ λ˜λŠ” λ°œμ·Œν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€. 예λ₯Ό λ“€μ–΄ νšŒμ›κ°€μž… ν™”λ©΄μ—μ„œ μ‚¬μš©μžλ‘œ λΆ€ν„° μž…λ ₯ λ°›λŠ” μ „ν™”λ²ˆν˜Έκ°€ μœ νš¨ν•œμ§€ 체크할 ν•„μš”κ°€ μžˆλ‹€.

poiemaweb.com

 


μœ„ λ§ν¬μ—μ„œ λ§Žμ€ μ˜ˆμ‹œκ°€ μžˆμ§€λ§Œ, μžμ£Όμ‚¬μš©ν•˜λŠ” μ •κ·œν‘œν˜„μ‹μ„ λͺ‡κ°€μ§€λ₯Ό TIL에 체크해두어야겠닀.

 

1) μˆ«μžκ°€ λ§žλŠ”μ§€ 검사

const targetStr = '12345';

// λͺ¨λ‘ μˆ«μžμΈμ§€ 검사
// [^]: λΆ€μ •(not)을 μ˜λ―Έν•œλ‹€. μ–˜λ₯Ό λ“€μ–΄ [^a-z]λŠ” μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œ μ‹œμž‘ν•˜μ§€ μ•ŠλŠ” λͺ¨λ“  문자λ₯Ό μ˜λ―Έν•œλ‹€.
// [] λ°”κΉ₯의 ^λŠ” λ¬Έμžμ—΄μ˜ μ²˜μŒμ„ μ˜λ―Έν•œλ‹€.
const regexr = /^\d+$/;

console.log(regexr.test(targetStr)); // true

 

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

const email = 'ungmo2@gmail.com';

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

console.log(regexr.test(email)); // true

 

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

const cellphone = '010-1234-5678';

const regexr = /^\d{3}-\d{3,4}-\d{4}$/;

console.log(regexr.test(cellphone)); // true

 

4) 특수문자 ν¬ν•¨μœ λ¬΄ 검사 

const targetStr = 'abc#123';

// A-Za-z0-9 μ΄μ™Έμ˜ λ¬Έμžκ°€ μžˆλŠ”μ§€ 검사
let regexr = /[^A-Za-z0-9]/gi;

console.log(regexr.test(targetStr)); // true

// μ•„λž˜ 방식도 λ™μž‘ν•œλ‹€. 이 λ°©μ‹μ˜ μž₯점은 특수 문자λ₯Ό μ„ νƒμ μœΌλ‘œ 검사할 수 μžˆλ‹€.
regexr = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/gi;

console.log(regexr.test(targetStr)); // true

// 특수 문자 제거
console.log(targetStr.replace(regexr, '')); // abc123

 


 

[ κ³Όμ œμ— λŒ€ν•œ μ‘°κ±΄μ—λŒ€ν•΄ λ‚΄κ°€ λ§Œλ“  식 ]

const nicknameRegex = /^(?=.*[0-9]+)[a-zA-Z][a-zA-Z0-9]{3,10}$/g
const passwordRegx = /^.{4,}$/;

 

^ : λ¬Έμžμ—΄μ˜ μ‹œμž‘

(?=.*[0-9]+) : μˆ«μžκ°€ ν¬ν•¨λ˜μ–΄μžˆμ–΄μ•Όν•¨

[a-zA-Z]: λŒ€μ†Œλ¬Έμž μ˜μ–΄κ°€ ν¬ν•¨λ˜μ–΄μžˆμ–΄μ•Όν•¨

[a-zA-Z0-9]{3,10}: μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμž λ˜λŠ” μˆ«μžκ°€ 3-10개 μžˆμ–΄μ•Όν•¨

$: λ¬Έμžμ—΄μ˜ λμ„ μ˜λ―Έν•©λ‹ˆλ‹€.
g: μ „μ—­ κ²€μƒ‰μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

 

 

^: λ¬Έμžμ—΄μ˜ μ‹œμž‘μ„ 의미
.: μž„μ˜μ˜ 문자λ₯Ό 의미
{4,}: μž„μ˜μ˜ λ¬Έμžκ°€ 4개 이상 μ—°μ†λ˜μ–΄μ•Ό 함
$: λ¬Έμžμ—΄μ˜ 끝을 의미

 


 

 

 

 

 

 

 

μš”μ¦˜ λ„ˆλ¬΄ λ°”λΉ μ„œ μ‹œκ°„μ΄ λ„ˆλ¬΄ μˆœμ‚­μŠ€
λ―ΏκΈ°μ§€ μ•Šκ² μ§€λ§Œ μ € μ§„μ§œ μš”μ¦˜ μ§‘μ—λ§Œ μžˆκ³ μš”.. 근데 λ°”μ˜κ³ μš”..
ν• κ²Œ λ§Žμ•„μš”... 근데 μ‹œκ°„μ€ λˆˆκ°μ•˜λ‹€ 뜨면 ν•˜λ£¨ μ§€λ‚˜μžˆλŠ”λ°..
이거 κΏˆμΈκ°€? 

μ•„λ¬΄νŠΌ κΈ°μŠΉμ „ ν™”μ΄νŒ….... 

νž˜λ‚΄λ΄…λ‹ˆλ‹€.. 

일단 λ‚΄μΌμ˜ ν•΄λŠ” λœ¨λ‹ˆκΉŒ λ§μž„λ‹ˆλ‹€.. κΈ°λ¦Ώ..!