string.match

match() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด์—์„œ ์ •๊ทœ์‹๊ณผ ๋งค์น˜๋˜๋Š” ๋ถ€๋ถ„์„ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š”๋‹ค.

const paragraph = 'Cats are the best';
const regex = /[A-Z]/g;
const found = paragraph.match(regex);

found; // ["C"]

Syntax

str.match(regexp)

Parameters

regexp

์ •๊ทœ์‹ ๊ฐ์ฒด์ด๋‹ค.

regexp๊ฐ€ ์ •๊ทœ์‹ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, new RegExp(regexp)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”์‹œ์ ์œผ๋กœ RegExp๋กœ ๋ณ€ํ™˜

์ธ์ˆ˜๋ฅผ ๋„˜๊ธฐ์ง€ ์•Š๊ณ  match() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋นˆ๋ฌธ์ž์—ด์„ ๊ฐ€์ง„ Array [''] ์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

return value

global(g) flag์— ๋”ฐ๋ฅธ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ์˜ Array, ๋งค์น˜๋˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์—†๋‹ค๋ฉด null

  • g flag๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์ „์ฒด ์ •๊ทœ ํ‘œํ˜„์‹๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, ์บก์ณ๊ทธ๋ฃน์€ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • g flag๊ฐ€ ์—†๋‹ค๋ฉด ์ฒ˜์Œ ์ผ์น˜ํ•œ๊ฒƒ๊ณผ ๊ทธ์— ๋Œ€ํ•œ ์บก์ณ ๊ทธ๋ฃน์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. RegExp.exec() ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฐ˜ํ™˜๋œ ์š”์†Œ๋Š” ๋‹ค์Œ ๐Ÿ‘‡ ์•„๋ž˜์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

global(g) flag

์ „์ฒด ํŒ๋ณ„, ์ฒ˜์Œ ์ผ์น˜์—์„œ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ , ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ํŒ๋ณ„ํ•œ๋‹ค.

์บก์ณ๋ง ๊ทธ๋ฃน(capturing group)

๊ด„ํ˜ธ๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ์˜์—ญ์ด๋‹ค. ๊ฒฐ๊ณผ๊ฐ’์— ์ฒซ๋ฒˆ์งธ์—” ๋งค์นญ ๋ฌธ์ž์—ด์ด ๋“ค์–ด๊ฐ€๊ณ  ๊ทธ ํ›„๋ถ€ํ„ด ์บก์ณ๋ง ๊ทธ๋ฃน ์•ˆ์— ์žˆ๋Š” ๋ฌธ์ž์—ด์ด ์ฐจ๋ก€๋Œ€๋กœ ๋“ค์–ด๊ฐ„๋‹ค. ์บก์ณ๋ง ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒจํ„ด ์•ˆ์˜ ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

(?x)

x์— ๋งค์น˜ํ•˜๊ณ  ์œผ๋กœ ๋ช…๋ช…๋œ ์ด๋ฆ„์œผ๋กœ ๋งค์น˜๋œ ๋ฐ˜ํ™˜๊ฐ’์ด ๊ทธ๋ฃน ํ”„๋กœํผํ‹ฐ๋กœ ์ €์žฅ๋œ๋‹ค.

('<'๊ณผ '>')์— ๊ทธ๋ฃน๋ช…์€ ํ•„์ˆ˜๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ „ํ™”๋ฒˆํ˜ธ์—์„œ ๋ฏธ๊ตญ์˜ ์ง€์—ญ ์ฝ”๋“œ๋ฅผ ๊บผ๋‚ผ ๋•Œ /((?\d\d\d))/์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๊ฒฐ๊ณผ๋ฒˆํ˜ธ๋Š” matches.groups.area ์— ํ‘œ์‹œ๋œ๋‹ค.

g flag๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ

๋…ผ-์บก์ณ๋ง ๊ทธ๋ฃน(non-capturing group)

?: ๊ธฐํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด non-capturing ๊ทธ๋ฃน์ด ๋œ๋‹ค.

non-capturing group์€ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค.

(?:x)

x์— ๋งค์น˜๋˜์ง€๋งŒ, ๋งค์น˜๋œ ๋‚ด์šฉ์„ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•œ๋‹ค.

์ถ”๊ฐ€ property

groups

key๊ฐ€ ์ด๋ฆ„์ด๊ณ  value๊ฐ€ ์บก์ณ๋ง ๊ทธ๋ฃน์ธ ๋ช…๋ช…๋œ ์บก์ณ๋ง ๊ทธ๋ฃน์˜ object, ์บก์ณ๋ง ๊ทธ๋ฃน์ด ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ undefined

Description

์ •๊ทœ์‹์— g flag๊ฐ€ ์—†๋‹ค๋ฉด, RegExp.exec()์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Other methods

  • ์ •๊ทœ์‹์ด ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•  ๋•Œ๋Š” RegExp ์‚ฌ์šฉํ•œ๋‹ค. RegExp.test()

  • ์ฒซ๋ฒˆ์งธ ์ผ์น˜ ํ•ญ๋ชฉ๋งŒ ์ฐพ์œผ๋ ค๋ฉด RegExp.exec()

  • ์บก์ฒ˜ ๊ทธ๋ฃน์„ ํ™•๋ณดํ•˜๊ณ  ๊ทธ๋กœ๋ฒŒ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด RegExp.exec() ๋˜๋Š” String.prototype.matchAll() ๋Œ€์‹  ์‚ฌ์šฉํ•œ๋‹ค.

Examples

match() ์‚ฌ์šฉ

match()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 'Chapter' ๋ผ๋Š” ๋‹จ์–ด์™€ ์— ์ด์–ด์ง€๋Š” 1 ์ด์ƒ์˜ ์ˆซ์ž, ์†Œ์ˆซ์ ์œผ๋กœ ์ˆซ์žํ˜•ํƒœ๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์ฐพ์Œ

i flag๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

match()์™€ ํ•จ๊ป˜ g (๊ธ€๋กœ๋ฒŒ) ํ”Œ๋ž˜๊ทธ์™€ i(๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ) ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉํ•˜๊ธฐ

๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์ด match() ์‚ฌ์šฉํ•˜๊ธฐ

๋น„ ์ •๊ทœํ‘œํ˜„์‹ ๊ฐ์ฒด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž์ด๋ฉด, ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ new RegExp(obj) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ RegExp ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ๋งŒ์•ฝ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ”Œ๋Ÿฌ์Šค ๊ธฐํ˜ธ์™€ ์ด์–ด์ง€๋Š” ์ˆซ์žํ˜•์ด๋ผ๋ฉด, RegExp() ๋ฉ”์„œ๋“œ๋Š” ํ”Œ๋Ÿฌ์Šค ๊ธฐํ˜ธ๋ฅผ ๋ฌด์‹œํ•œ๋‹ค.

์ฐธ๊ณ 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๊ทœํ‘œํ˜„์‹์˜ capturing group

MDN web docs - Groups and ranges

RegExp Named Capture Groups

Last updated

Was this helpful?