๐Ÿ“– RegExp

c_yjยท2022๋…„ 7์›” 9์ผ
0

DeepDive

๋ชฉ๋ก ๋ณด๊ธฐ
28/42
post-thumbnail

์ •๊ทœ ํ‘œํ˜„์‹์ด๋ž€ โ“

์ •๊ทœ ํ‘œํ˜„์‹์€ ์ผ์ •ํ•œ ํŒจํ„ด์„ ๊ฐ€์ง„ ๋ฌธ์ž์—ด์˜ ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹ ์–ธ์–ด๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹์€ ๋ฌธ์ž์—ด์„ ๋Œ€์ƒ์œผ๋กœ ํŒจํ„ด ๋งค์นญ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ํŒจํ„ด ๋งค์นญ ๊ธฐ๋Šฅ์ด๋ž€ ํŠน์ • ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์ถ”์ถœ ๋˜๋Š” ์น˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋งํ•œ๋‹ค
์ •๊ทœ ํ‘œํ˜„์‹์€ ์ฃผ์„์ด๋‚˜ ๊ณต๋ฐฑ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐํ˜ธ๋ฅผ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ๋–„๋ฌธ์— ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š๋‹ค..`

์ •๊ทœ ํ‘œํ˜„์‹์˜ ์ƒ์„ฑ โ“

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

const target = 'Is this all there is?';

// ํŒจํ„ด: is
// ํ”Œ๋ž˜๊ทธ: i => ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ณ   ๊ฒ€์ƒ‰ํ•œ๋‹ค
const regexp = /is/i;

// test ๋ฉ”์„œ๋“œ๋Š” target ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ์ •๊ทœ ํ‘œํ˜„์‹ regexp์˜ ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ
// ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
regexp.text(target); // true

RegExp ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ RegExp ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

const target = 'Is this all there is?';

const regexp = new RegExp(/is/i); // ES6
// const regexp = new RegExp(/is/, 'i');
// const regexp = new RegExp('is', 'i);

regexp.text(target); // true

RegExp ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋™์ ์œผ๋กœ RegExp ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

const count = (str, char) => (str.match(new RegExp(char, 'gi')) ?? []).length;
                              
count('Is this all there is?'. 'is'); // 3
count('Is this all there is?', 'xx'); // 0

RegExp ๋ฉ”์„œ๋“œ โ“

RegExp.prototype.exec โ”

exec ๋ฉ”์„œ๋“œ๋Š” ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ์ •๊ทœ ํ‘œํ˜„์‹์˜ ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜. ๋งค์นญ ๊ฒฐ๊ณผ๊ฐ€ ์—†๋Š”๊ฒฝ์šฐ null

const target = 'Is this all there is?;
const regExp = /is/;

regExp.exec(target);
// ["is", index: 5, input : "Is this all there is?", groups: undefined]

exec ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด ๋‚ด์˜ ๋ชจ๋“  ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•˜๋Š” g ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•ด๋„ ์ฒซ ๋ฒˆ์จฐ ๋งค์นญ ๊ฒฐ๊ณผ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ฃผ์˜

RegExp.prototype.test โ”

test ๋ฉ”์„œ๋“œ๋Š” ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ์ •๊ทœ ํ‘œํ˜„์‹์˜ ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜

const target = 'Is this all there is?';
const regExp = /is/;

regExp,text(target); // true

RegExp.prototype.match โ”

String ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๊ฐ€ ์ œ๊ณตํ•˜๋Š” match ๋ฉ”์„œ๋“œ๋Š” ๋Œ€์ƒ ๋ฌธ์ž์—ด๊ณผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ •๊ทœ ํ‘œํ˜„์‹๊ณผ์˜ ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜.

const traget = 'Is this all there is?';
const regExp = /is/;

target.match(regExp);
// ["is", index: 5, input: "Is this all there is?", groups: undefined]

match. ๋ฉ”์„œ๋“œ๋Š” g ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ง€์ •๋˜๋ฉด ๋ชจ๋“  ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜

const target = 'Is this all there is?';
const regExp = /is/g;

target.match(regExp); // ["is", "is"]

ํ”Œ๋ž˜๊ทธ โ“

ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ์ •๊ทœ ํ‘œํ˜„์‹์„ ๊ตฌ์„ฑํ•˜๋Š” ํ”Œ๋ž˜๊ทธ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์˜ ๊ฒ€์ƒ‰ ๋ฐฉ์‹์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค ํ”Œ๋ž˜๊ทธ๋Š” 6๊ฐœ์ง€๋งŒ ์ค‘์œ ํ•œ 3๊ฐœ์˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์•Œ์•„๋ณด์ž

ํ”Œ๋ž˜๊ทธ์˜๋ฏธ์„ค๋ช…
iIgnore case๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ณ  ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
gGlobal๋Œ€์ƒ ๋ฌธ์ž์—ด ๋‚ด์—์„œ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์ „์—ญ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
mMulti line๋ฌธ์ž์—ด์˜ ํ–‰์ด ๋ฐ”๋€Œ๋”๋ผ๋„ ํŒจํ„ด ๊ฒ€์ƒ‰์„ ๊ณ„์†ํ•œ๋‹ค.
  • ํ”Œ๋ž˜๊ทธ๋Š” ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ
  • ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋™์‹œ์— ์„ค์ • ๊ฐ€๋Šฅ
  • ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•ด์„œ ํŒจํ„ด ๊ฒ€์ƒ‰
  • ๋ฌธ์ž์—ด์— ํŒจํ„ด ๊ฒ€์ƒ‰ ๋งค์นญ ๋Œ€์ƒ์ด 1๊ฐœ ์ด์ƒ ์กด์žฌํ•ด๋„ ์ฒซ ๋ฒˆ์งธ ๋งค์นญํ•œ ๋Œ€์ƒ๋งŒ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ข…๋ฃŒ

ํŒจํ„ด โ“

์ •๊ทœ ํ‘œํ˜„์‹์€ ์ผ์ •ํ•œ ๊ทœ์น™์„ ๊ฐ€์ง„ ๋ฌธ์ž์—ด์˜ ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹ ์–ธ์–ด๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹์€ ํŒจํ„ด๊ณผ ํ”Œ๋ž˜๊ทธ๋กœ ๊ตฌ์„ฑ

  • ํŒจํ„ด : ๋ฌธ์ž์—ด์˜ ์ผ์ •ํ•œ ๊ทœ์น™์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • ํ”Œ๋ž˜๊ทธ : ์ •๊ทœ ํ‘œํ˜„์‹์˜ ๊ฒ€์ƒ‰ ๋ฐฉ์‹์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ โ”

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

const target = 'Is this all there is?';

// 'is' ๋ฌธ์ž์—ด๊ณผ ๋งค์น˜ํ•˜๋Š” ํŒจํ„ด, ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ƒ๋žต๋˜์—ˆ์œผ๋ฏ€๋กœ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•œ๋‹ค.
const regExp = /is/;

// target๊ณผ ์ •๊ทœ ํ‘œํ˜„์‹์ด ๋งค์น˜ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
regExp.test(target); // true

// target๊ณผ ์ •๊ทœ ํ‘œํ˜„์‹์˜ ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•œ๋‹ค.
target.matach(regExp);
// ["is", index: 5, input: "Is this all there is", groups: undefined] 

๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด ํ”Œ๋ž˜๊ทธ i๋ฅผ ์‚ฌ์šฉ
๊ฒ€์ƒ‰ ๋Œ€์ƒ ๋ฌธ์ž์—ด ๋‚ด์—์„œ ํŒจํ„ด๊ณผ ๋งค์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์ „์—ญ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด ํ”Œ๋ž˜๊ทธ g๋ฅผ

์ž„์˜์˜ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ โ”

.์€ ์ž„์˜์˜ ๋ฌธ์ž ํ•œ ๊ฐœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ฌธ์ž์˜ ๋‚ด์šฉ์€ ๋ฌด์—‡์ด๋“  ์ƒ๊ด€์—†๋‹ค.

const target = 'Is this all there is?';

// ์ž„์˜์˜ 3์ž๋ฆฌ ๋ฌธ์ž์—ด์„ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์—ฌ ์ „์—ญ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
const regExp = /.../g;

target.match(rgeExp); // ["Is", "thi", "s a", "li", "the", "re", "is?"]

๋ฐ˜๋ณต ๊ฒ€์ƒ‰ โ”

{m,n}์€ ์•ž์„  ํŒจํ„ด์ด ์ตœ์†Œ m๋ฒˆ, ์ตœ๋Œ€ n๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•œ๋‹ค. ์ฝค๋งˆ ๋’ค์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฃผ์˜

const target = 'A AA BB Aa Bb AAA';

// 'A'๊ฐ€ ์ตœ์†Œ 1๋ฒˆ, ์ตœ๋Œ€ 2๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์ „์—ญ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
const regExp = /A{1,2}/g;

target.match(regExp); // ["A", "AA", "A", "AA", "A"]
  • {n}์€ ์•ž์„  ํŒจํ„ด์ด n๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, {n}์€ {n,n}์™€ ๊ฐ™๋‹ค.
  • {n,}์€ ์•ž์„  ํŒจํ„ด์ด ์ตœ์†Œ n๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์˜๋ฏธ
  • +๋Š” ์•ž์„  ํŒจํ„ด์ด ์ตœ์†Œ ํ•œ๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์˜๋ฏธ +๋Š” {1,}์™€ ๊ฐ™๋‹ค
  • ?๋Š” ์•ž์„  ํŒจํ„ด์ด ์ตœ๋”” ํ•œ ๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰ ?๋Š” {0,1}๊ณผ ๊ฐ™๋‹ค.

OR ๊ฒ€์ƒ‰ โ”

|์€ or์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š”๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ์˜ /A|B/๋Š” 'A' ๋˜๋Š” 'B'๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

const target = 'A AA B BB Aa Bb';

// 'A' ๋˜๋Š” 'B'๋ฅผ ์ „์—ญ ๊ฒ€์ƒ‰ํ•œ๋‹ค
const regExp = /A|B/g;

target.match(regExp); ["A", "A", "A", "B", "B", "B", "A", "B"]
  • ๋ถ„ํ•ด๋˜์ง€ ์•Š์€ ๋‹จ์–ด ๋ ˆ๋ฒจ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” +๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉ
  • ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด [] ๋‚ด์— -๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ณ  ์•ŒํŒŒ๋ฒณ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

const target = 'AA BB Aa Bb 12';

// 'A' ~ 'Z' ๋˜๋Š” 'a' ~ 'z'๊ฐ€ ํ•œ ๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์ „์—ญ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
const regExp = /[A-Za=z]+/g;

target.match(regExp); // ["AA", "BB", "Aa", "Bb"]

์ˆซ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

const target = 'AA BB 12,345';

// 'a' ~ '9'๊ฐ€ ํ•œ ๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์ „์—ญ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
const regExp = /[0-9]+/g;

target.match(regExp); // ["12", "345"]

NOT ๊ฒ€์ƒ‰ โ”

[...] ๋‚ด์˜ ^์€ not์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š”๋‹ค.

const target = 'AA BB 12 Aa Bb';

// ์ˆซ์ž๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž์—ด์„ ์ „์—ญ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
const regExp = /[^0-9]+/g;

target.match(regExp); // ["AA BB", "Aa Bb"]

์‹œ์ž‘ ์œ„์น˜๋กœ ๊ฒ€์ƒ‰ โ”

[...] ๋ฐ–์˜ ^์€ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘์„ ์˜๋ฏธํ•œ๋‹ค. ๋‹จ, [...] ๋‚ด์˜ ^์€ not์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ฃผ์˜ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

const target = 'https://poiemaweb.com';

// 'https'๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.
const regExp = /^https/;

regExp.text(target); // true

๋งˆ์ง€๋ง‰ ์œ„์น˜๋กœ ๊ฒ€์ƒ‰ โ”

$์€ ๋ฌธ์ž์—ด์˜ ๋งˆ์ง€๋ง‰์„ ์˜๋ฏธํ•œ๋‹ค

const target = 'https://poiemaweb.com';

// 'com'๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.
const regExp = /com$/;

regExp.text(target); // true

์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ •๊ทœํ‘œํ˜„์‹ โ“

ํŠน์ • ๋‹จ์–ด๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ โ”

[...] ๋ฐ”๊นฅ์˜ ^์€ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘์„ ์˜๋ฏธํ•˜๊ณ , ?์€ ์•ž์„  ํŒจํ„ด์ด ์ตœ๋Œ€ ํ•œ๋ฒˆ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š”์ง€ ์˜๋ฏธํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๊ฒ€์ƒ‰ ๋Œ€์ƒ ๋ฌธ์ž์—ด์— ์•ž์„  ํŒจํ„ด('s')์ด ์žˆ์–ด๋„ ์—†์–ด๋„ ๋งค์น˜๋œ๋‹ค.

ํŠน์ • ๋‹จ์–ด๋กœ ๋๋‚˜๋Š”์ง€ ๊ฒ€์‚ฌ โ”

๊ฒ€์ƒ‰ ๋Œ€์ƒ ๋ฌธ์ž์—ด์ด 'html'๋กœ ๋๋‚˜๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค. $ใ…กใ„ด ๋ฌธ์ž์—ด์˜ ๋งˆ์ง€๋ง‰์„ ์˜๋ฏธ

const fileName = 'index.html';

// 'html'๋กœ ๋๋‚˜๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.
/html$/.test(fileName); // true

์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ธ์ง€ ๊ฒ€์‚ฌ โ”

[...] ๋ฐ”๊นฅ์˜ ^์€ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘์„. $๋Š” ๋ฌธ์ž์—ด์˜ ๋งˆ์ง€๋ง‰์„ ์˜๋ฏธํ•œ๋‹ค. \d๋Š” ์ˆซ์ž๋ฅผ ์˜๋ฏธํ•˜๊ณ  +๋Š” ์•ž์„  ํŒจํ„ด์ด ์ตœ์†Œ ํ•œ ๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์˜๋ฏธ. ์ฆ‰ ์ฒ˜์Œ๊ณผ ๋์ด ์ˆซ์ž์ด๊ณ  ์ตœ์†Œ ํ•œ ๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด๊ณผ ๋งค์น˜

const fileName = '12345';

// ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ธ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.
/^\d+$/.test(target); // true

ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณต๋ฐฑ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ โ”

const target = 'Hi!';
// ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณต๋ฐฑ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ
/^[\s]+/.test(target); // true

์•„์ด๋””๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒ€์‚ฌ โ”

const id = 'abc123';
// ์•ŒํŒŒ๋ฒณ ๋Œ€์†Œ๋ฌธ์ž ๋˜๋Š” ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋๋‚˜๋ฉฐ 4~10์ž๋ฆฌ์ธ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.
/^[A-Za-z0-9]{4,10}$/.text(id); // true

๋ฉ”์ผ ์ฃผ์†Œ ํ˜•์‹์— ๋งž๋Š”์ง€ ๊ฒ€์‚ฌ โ”

const email = 'ungmo2@gmail.com';

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

ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ํ˜•์‹์— ๋งž๋Š”์ง€ ๊ฒ€์‚ฌ โ”

const cellphone = '010-1234-5678';

/^\d{3}-\d{3,4}-\d{4}$/.test(cellphone); // true

ํŠน์ˆ˜ ๋ฌธ์ž ํฌํ•จ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ โ”

const target = 'abc#123';

(/[^A-Za-z0-9]).text(target); // true
 

ํŠน์ˆ˜๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•  ๋–„๋Š” String.prototype.replace ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ

profile
FrontEnd Developer

0๊ฐœ์˜ ๋Œ“๊ธ€