์ •๊ทœํ‘œํ˜„์‹

2022. 4. 11. 08:40ยท JavaScript
๋ชฉ์ฐจ
  1. ์ •๊ทœํ‘œํ˜„์‹์˜ ์‹ค์ œ ์‚ฌ์šฉ
  2. Flag์˜ ์ข…๋ฅ˜
  3. ํ‘œํ˜„์‹
  4. ์‚ฌ์šฉ๋ฒ•

๐Ÿ’ก ์“ฐ๋ฉด ํŽธํ•˜์ง€๋งŒ, ์ž์ฃผ ์•ˆ์จ์„œ ์ž˜ ๊นŒ๋จน๋Š” ์ •๊ทœํ‘œํ˜„์‹์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์ž!

 

์‚ฌ์‹ค ์ด๋ ‡๊ฒŒ ์ •๋ฆฌํ•˜๊ฒŒ ๋œ ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€๋‹ค ์ •๊ทœํ‘œํ˜„์‹์„ ์ด์šฉํ•˜๋ฉด ๊ต‰์žฅํžˆ ํŽธ๋ฆฌํ•ด์ง€๋Š” ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

์ •๊ทœํ‘œํ˜„์‹ ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜ ๋งํฌ, mdn์—์„œ ์ •๋ง ๋งŽ์€ ๋„์›€์„ ์–ป์—ˆ๋‹ค.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions

 

์ •๊ทœ ํ‘œํ˜„์‹ - JavaScript | MDN

์ •๊ทœ ํ‘œํ˜„์‹, ๋˜๋Š” ์ •๊ทœ์‹์€ ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ๋ฌธ์ž ์กฐํ•ฉ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. JavaScript์—์„œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹๋„ ๊ฐ์ฒด๋กœ์„œ, RegExp์˜ exec()์™€ test() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. String์˜ match(), matchA

developer.mozilla.org

 


 

์ •๊ทœํ‘œํ˜„์‹์˜ ์‹ค์ œ ์‚ฌ์šฉ

//์ •๊ทœํ‘œํ˜„์‹ ์‚ฌ์šฉ.
function solution(new_id) {
  const answer = new_id
    .toLowerCase()
//์˜์–ด์†Œ๋ฌธ์ž, ์ˆซ์ž0-9, ํŠน์ˆ˜๋ฌธ์ž '.', '_', '-'๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์—†์•ค๋‹ค.
    .replace(/[^a-z0-9._-]/g, "")
//ํŠน์ˆ˜๋ฌธ์ž '.'์ด 2๊ฐœ ์ด์ƒ ๋ฐ˜๋ณต๋œ๋‹ค๋ฉด, ํ•ด๋‹น ๋ถ€๋ถ„์„ '.'ํ•˜๋‚˜๋กœ ๋ฐ”๊พผ๋‹ค.
    .replace(/\\.{2,}/g, ".")
//์ฒซ ์‹œ์ž‘์ด '.'์ด๊ฑฐ๋‚˜, '.'์œผ๋กœ ๋๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด, '.'์„ ์‚ญ์ œํ•œ๋‹ค.
    .replace(/^\\.|\\.$/g, "")
//๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 1์ด์ƒ์ด ๋ ๋•Œ๊นŒ์ง€ 'a'๋ฅผ ๋ฐ˜๋ณตํ•ด ๋„ฃ๋Š”๋‹ค.
    .padEnd(1, 'a')
    .slice(0, 15)
//๋ฌธ์ž์—ด์˜ ๋งˆ์ง€๋ง‰๊ธ€์ž๊ฐ€ .์ด๋ผ๋ฉด, ์‚ญ์ œํ•œ๋‹ค.
    .replace(/\\.$/g, "")
    
//๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 3์ดํ•˜๋ผ๋ฉด, ๋ฌธ์ž์—ด ๋งˆ์ง€๋ง‰ ๊ธ€์ž๋ฅผ ๊ธธ์ด๊ฐ€ 3์ด ๋ ๋•Œ๊นŒ์ง€ ๋”ํ•ด์ค€๋‹ค.
  return answer.padEnd(3, answer[answer.length-1]);
}

Flag์˜ ์ข…๋ฅ˜

  1. g: Global์„ ์˜๋ฏธํ•˜๋ฉฐ, ๋ฌธ์ž์—ด ๋‚ด์˜ ๋ชจ๋“  ํŒจํ„ด์„ ์ฐพ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ํŒจํ„ด์— ๋งŒ์กฑํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฌธ์ž์—ด์ด ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด, ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด ๋ชจ๋‘ ์ฐพ๊ฒŒ ๋œ๋‹ค. ๊ฐ€์žฅ ์ž์ฃผ ์“ฐ๊ฒŒ ๋˜๋Š” Flag์ด๋‹ค.
  2. i: Ignore Case, ๋ฌธ์ž์—ด์˜ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  3. m: Multi Line, ๋ฌธ์ž์—ด์˜ ํ–‰์ด ๋ฐ”๋€Œ์–ด๋„ ์ฐพ๋Š”๋‹ค.

ํ‘œํ˜„์‹

[abc] any of a, b, or c ์ฆ‰, a ๋˜๋Š” b ๋˜๋Š” c๋ฅผ ์ฐพ๋Š”๋‹ค.
[^abc] not a, b, or c ์ฆ‰, a๋„, b๋„ c๋„ ์•„๋‹Œ ๊ฒƒ๋“ค์„ ์ฐพ๋Š”๋‹ค.
[a-z] ์˜์–ด ์†Œ๋ฌธ์ž a๋ถ€ํ„ฐ z๊นŒ์ง€ ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ๋“ค์„ ์ฐพ๋Š”๋‹ค.
^a a๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•จ์„ ์˜๋ฏธํ•œ๋‹ค. ๋ฌธ์ž์—ด ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” a๋ฅผ ์ฐพ๊ฒŒ ๋œ๋‹ค.
a$ ๋ฌธ์ž์—ด์˜ ์ข…๋ฃŒ๋ฅผ ์˜๋ฏธ. ๋ฌธ์ž์—ด ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” a๋ฅผ ์ฐพ๊ฒŒ ๋œ๋‹ค.
a+ a๋ผ๋Š” ๋ฌธ์ž๊ฐ€ ํ•œ๋ฒˆ์ด์ƒ ํฌํ•จ๋˜๋Š” ๊ฒƒ์„ ์ฐพ๊ฒŒ ๋œ๋‹ค. e.g. a, aa, aaa,...
a{n} a๋ผ๋Š” ๋ฌธ์ž๊ฐ€ n๋ฒˆ ๋ฐ˜๋ณต๋จ์„ ์˜๋ฏธํ•œ๋‹ค.
a{n,} a๋ผ๋Š” ๋ฌธ์ž๊ฐ€ n๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋จ์„ ์˜๋ฏธํ•œ๋‹ค.
a{n,m} a๋ผ๋Š” ๋ฌธ์ž๊ฐ€ n๋ฒˆ ์ด์ƒ m๋ฒˆ์ดํ•˜๋กœ ๋ฐ˜๋ณต๋จ์„ ์˜๋ฏธํ•œ๋‹ค.
\ ์ด์Šค์ผ€์ดํ”„๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๋’ค์—์˜ค๋Š” ๋ฌธ์ž๋ฅผ ๋ฌธ์ž๊ทธ๋Œ€๋กœ ๋ณด๊ฒ ๋‹ค๋Š” ๋œป์ด๋‹ค.
\^ ๋ฌธ์ž "^"๋ฅผ ์ฐพ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์—ฌ๊ธฐ์„œ ^๋Š” not์ด๋‚˜ ๋ฌธ์ž์—ด ์‹œ์ž‘์„ ์•Œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.
\w ๋ฐ‘์ค„ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•œ ์˜์ˆซ์ž ๋ฌธ์ž์— ๋Œ€์‘๋œ๋‹ค. [A-Za-z0-9_] ์™€ ๋™์ผํ•˜๋‹ค
\W ๋‹จ์–ด ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์— ๋Œ€์‘๋œ๋‹ค.. [^A-Za-z0-9_] ์™€ ๋™์ผํ•˜๋‹ค.
\d ์ˆซ์ž ๋ฌธ์ž์— ๋Œ€์‘๋œ๋‹ค. [0-9]์™€ ๋™์ผํ•˜๋‹ค.
\D ์ˆซ์ž ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์— ๋Œ€์‘๋œ๋‹ค. [^0-9]์™€ ๋™์ผํ•˜๋‹ค.

 


 

์‚ฌ์šฉ๋ฒ•

I. Boolean๊ฐ’์„ ์›ํ• ๋•Œ: test

**/regex/.test(string)**๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์ด ํ•ด๋‹น ๋ฌธ์ž์—ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. e.g. /[^a-z0-9]/.test('ํ•œasdf123c9') โ‡’ 'ํ•œ'์ด๋ผ๋Š” ๊ธ€์ž๊ฐ€ ํฌํ•จ ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ true๊ฐ€ ๋‚˜์˜จ๋‹ค.

 


 

II. ๋Œ€์‘ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์ฐพ์•„์„œ, ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์„๋•Œ: replace

[string].replace(/regex/, '๋‹ค๋ฅธ ๋ฌธ์ž์—ด') ํ˜•์‹์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

e.g. 'applpe'.replace(/p{2}/, 'b') โ‡’p๊ฐ€ ๋‘๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ 'b'๋กœ ๋ฐ”๊พธ๊ฒ ๋‹ค๋Š” ๋œป์ด๋‹ค. โ‡’ "ablpe"์ด ์ถœ๋ ฅ๋˜๊ฒŒ ๋œ๋‹ค.

๋งŒ์•ฝ์—, ๋‚ด๊ฐ€ ์ฐพ์€ ๋ฌธ์ž์—ด ์•ž๋’ค๋กœ ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ???

โ‡’ $& ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค!

let str = "100-200*300-500+20"
let test = str.replace(/[\\+\\-\\*]/g, " $& ")
console.log(test)
//"100 - 200 * 300 - 500 + 20"๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.
//์—ฌ๊ธฐ์„œ, $&๋Š” ๋‚ด๊ฐ€ ์ฐพ์€ ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ์˜๋ฏธํ•˜๊ฒŒ ๋œ๋‹ค. 

 


โ€‹

 

III. ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ์ •๊ทœํ‘œํ˜„์‹์„ ๋™์ ์œผ๋กœ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? : new RegExp

RegExp ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋ฆฌํ„ฐ๋Ÿด ํ‘œ๊ธฐ๋ฒ•๊ณผ ์ƒ์„ฑ์ž๋กœ์จ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ๋ฆฌํ„ฐ๋Ÿด ํ‘œ๊ธฐ๋ฒ•: new RegExp(/ab+c/, 'g')
  2. ์ƒ์„ฑ์ž ํ‘œ๊ธฐ๋ฒ•: new RegExp('ab+c', 'g')

์ •๊ทœํ‘œํ˜„์‹์ด ๋ณ€ํ•˜์ง€ ์•Š๊ณ , ์ •์ ์ธ ํƒ€์ž…์ผ ๋•Œ ๋ฆฌํ„ฐ๋Ÿด ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ , ์ •๊ทœํ‘œํ˜„์‹ ์™ธ๋ถ€์—์„œ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ํŒจํ„ด์ด ๋ณ€ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ƒ์„ฑ์ž ํ‘œ๊ธฐ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

function solution(s) {
  let table = [
    "zero",
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine",
  ];

  for (let i = 0; i < table.length; i++) {
		//์ƒ์„ฑ์ž ํ‘œ๊ธฐ๋ฒ•์„ ํ†ตํ•ด, ์ •๊ทœํ‘œํ˜„์‹์„ ์ƒ์„ฑํ•˜๊ณ  ๋™์ ์œผ๋กœ ๋ฐ”๊พธ์–ด ๊ฐ€๋ฉฐ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹
    s = s.replace(new RegExp(`${table[i]}`, "g"),i);
  }
  return Number(s);
}
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

json [object Object] ์ถœ๋ ฅ  (0) 2022.04.13
new Set์œผ๋กœ ๋ฐฐ์—ด ์ค‘๋ณต๊ฐ’ ์ œ๊ฑฐ(with ํผํฌ๋จผ์Šค ํ…Œ์ŠคํŠธ)  (0) 2022.04.11
[ES6] Map vs Set  (0) 2022.04.11
๋‚ ์งœ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜๊ธฐ(feat. dayjs)  (0) 2022.04.11
๊นŠ์€ ๋ณต์‚ฌ vs ์–•์€ ๋ณต์‚ฌ  (0) 2022.04.09
  1. ์ •๊ทœํ‘œํ˜„์‹์˜ ์‹ค์ œ ์‚ฌ์šฉ
  2. Flag์˜ ์ข…๋ฅ˜
  3. ํ‘œํ˜„์‹
  4. ์‚ฌ์šฉ๋ฒ•
'JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • new Set์œผ๋กœ ๋ฐฐ์—ด ์ค‘๋ณต๊ฐ’ ์ œ๊ฑฐ(with ํผํฌ๋จผ์Šค ํ…Œ์ŠคํŠธ)
  • [ES6] Map vs Set
  • ๋‚ ์งœ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜๊ธฐ(feat. dayjs)
  • ๊นŠ์€ ๋ณต์‚ฌ vs ์–•์€ ๋ณต์‚ฌ
moyanglee
moyanglee
moyanglee
moyang
moyanglee
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ์ „์ฒด๋ณด๊ธฐ (173)
    • java,springboot (22)
    • CI CD (8)
    • ๋ณด์•ˆ (1)
    • Vue (21)
    • TypeScript (14)
    • SQL (2)
    • Docker (11)
    • JavaScript (17)
    • React (3)
    • NextJS (14)
    • d3 (2)
    • Git (3)
    • network (2)
    • Openlayers (4)
    • ํ…Œ์ŠคํŠธ์ฝ”๋“œ (5)
    • NestJS (9)
    • ๊ฐœ๋ฐœํ™˜๊ฒฝ (7)
    • Algorithm (6)
    • TypeORM (5)
    • CSS (7)
    • MySQL (5)
    • Linux (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

  • ํ˜„์žฌ ๋…ธ์…˜์˜ ๋‚ด์šฉ์„ ๋ธ”๋กœ๊ทธ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์— ์žˆ์Šต๋‹ˆ๋‹ค.
  • github, notion ๋งํฌ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Migration
  • mysql
  • js
  • no space left on device
  • AWS
  • jest
  • nextjs
  • java
  • node ๋ฒ„์ „ ๋ณ€๊ฒฝ
  • typeorm
  • Error: P1001
  • NestJS
  • springboot
  • react
  • OOP
  • OpenLayers
  • object
  • d3
  • r2dbc
  • useRef
  • generic
  • vue
  • Docker
  • typescript
  • Entity
  • vue3
  • ts
  • npm ๋ฒ„์ „ ๋ณ€๊ฒฝ
  • Uncaught (in promise) Error: Redirected when going from
  • Error: P1001: Can't reach database server at

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.0
moyanglee
์ •๊ทœํ‘œํ˜„์‹
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.