
๐ ๊ณต๋ฐฑ๋๋ฌธ์ ์์ฝ์ด ์คํจํ๋ค๊ณ ? - ์ ๊ทํํ์ ๊ฒ์ฆ ๋ถ์ผ์น ์ด์ ํด๊ฒฐ๊ธฐ
๋ฌธ์ ์ํฉ
ํน์ ์ํ์ ์์ฝํ๊ธฐ์ํด ํด๋น ์์ดํ
์ ์ ํํ์ฌ ์์ฝ๊ฒฐ์ ํ์ด์ง์์ ์์ฝํผ์ ๋ชจ๋ ์ฑ์ฐ๊ณ ์์ฝํ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ์์ฝ์์ฑ์์ฒญ์ ์คํจํ๋ ํ์์ด ์์๋ค. CS ๋ก๊ทธ๋ฅผ ํ์ธํด๋ณด๋ ๊ณตํต์ ์ผ๋ก LASTNAME ํ๋์ ๊ณต๋ฐฑ์ ํฌํจํ๋ฉด ์์ฝ์ ์คํจํ๋ค๋ ์๊ฒฌ์ด ๋ง์๋ค.
DataDog ์๋ฌ ๋ก๊ทธ๋ฅผ ์ดํด๋ณธ ๊ฒฐ๊ณผ, ๋ฐฑ์๋์์ LASTNAME ํ๋ ๊ฒ์ฆ ์ /[\\S]{1,128}/ ์ ๊ทํํ์์ ํต๊ณผํ์ง ๋ชปํ๋ฉด์ ์์ฒญ์ด ๊ฑฐ์ ๋๊ณ ์์๋ค.
๋์ ๋ถ์
- ๊ณต๊ธ์ฌ์ ์ ๊ทํํ์ ์์ ์์ฒญ
- ์ฅ์ : ์ฌ๋ด ๊ฐ๋ฐ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค. (๋ฒํฐ์ปฌ ์์ ์ ํ์๋กํ์ง ์์. )
- ๋จ์ : ๊ณต๊ธ์ฌ์์ ์ฆ๊ฐ ๋์ํด์ค ๋ณด์ฅ์ด ์๊ณ “๋ค๋ฅธ ํ๋งค์ฒ์๋ ์ํฅ์ด ๊ฐ๋ค”๋ ์ด์ ๋ก ํ์๊ฐ ์ง์ฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ๋ํ ์์ ์ ๊น์ง ํด๋น ์ํ์ ํ๋งค ์ค๋จํด์ผ ํ๋ฏ๋ก ๋งค์ถ ์์ค์ด ๋ฐ์ํ๋ค.
- ํ๋ก ํธ์๋์์ ๋งคํ ํ ์ด๋ธ๋ก ๋์
- ์ฅ์ : ๋ด๋ถ ๋ฆฌ์์ค๋ก ์ ์ํ ๋์ ๊ฐ๋ฅํ๋ค.
- ๋จ์ : ์๋ฒ์ ์์กด์ฑ์ด ์๋ ์ ๊ทํํ์ ๋ก์ง ์ผ๋ถ๋ฅผ ํ๋ก ํธ๋ก ๊ฐ์ ธ์ค๋ฏ๋ก ์ฝ๋ ์ผ๊ด์ฑ์ด ๊นจ์ง ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ์๊ฒผ์๊น?
2๋ฒ ๋ฐฉ๋ฒ์ ์ ํํ๊ธฐ ์ ์, ์์ธ์ ๋ช ํํ ํ์ ํ๊ณ ์ถ์๋ค.
DB๋ฅผ ์กฐํํด๋ณด๋, ์ ์ฒด ์์ฝ ๊ฒฐ์ ํ์ด์ง ์ ๊ทผ์ ์ค ์ฝ 4%๊ฐ ํด๋น ์ ๊ทํํ์์ ์ฌ์ฉํ๋ ์ํ์ ์์ฝํ๊ณ ์์๋ค. ์ ์ง ์์ ๋น์จ์ด์๊ณ
์ด์์ ํต์ฌ์ “ํ๋ก ํธ์์๋ ํต๊ณผํ๋๋ฐ ๋ฐฑ์๋์์๋ ์คํจํ๋ค”๋ ์ ์ด์๋ค. ํ๋ก ํธ์์๋ ๊ฐ์ ์ ๊ท์์ ์ฌ์ฉํ๊ณ ์์์๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋๋ ์ด์ ๋ฅผ ์ถ์ ํด๋ณด๋
๐ ์๋ฐ์คํฌ๋ฆฝํธ์ RegExp.test ๋ฉ์๋๋ ๋ถ๋ถ ๋งค์นญ(partial match) ๋ฐฉ์์ ์ฌ์ฉํ๋ค๋ ์ ์ ํ์ธํ๋ค.
์ฆ, ๋ฌธ์์ด ์ ์ฒด๊ฐ ์๋๋ผ ์ผ๋ถ๋ถ๋ง ์ผ์นํด๋ true๋ฅผ ๋ฐํํ๋ค. ์๋ฅผ ๋ค์ด YEONG WOO๋ผ๋ ๋ฌธ์์ด์ ์ค๊ฐ์ ๊ณต๋ฐฑ์ด ์์ง๋ง, ์๋ถ๋ถ YEONG์ด /[\S]{1,128}/ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฏ๋ก ํต๊ณผ๋๋ค.
๋ฐ๋ฉด ๋ฐฑ์๋(Kotlin)์ regex.matches()๋ ๋ฌธ์์ด ์ ์ฒด ์ผ์น(full match) ๋ฅผ ๊ฒ์ฌํ๋ค. ๊ฒฐ๊ตญ ๋์ผํ ์ ๊ท์์ด ํ๋ก ํธ์์๋ ํต๊ณผํ๊ณ , ๋ฐฑ์๋์์๋ ์คํจํ๋ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ด๋ป๊ฒ ํด๊ฒฐํ์ด?
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฌธ์์ด ์ ์ฒด๋ฅผ ๊ฒ์ฆํ๋ ค๋ฉด ์ ๊ท์ ์ ๋์ ์ต์ปค(^, $) ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.
๋ฐ๋ผ์ ํ๋ก ํธ์๋์์๋ ์๋์ฒ๋ผ ์ ๊ท์ ๋งคํ ํ
์ด๋ธ์ ๋ง๋ค์ด ๋ถ์์ ํ ํจํด์ ๊ต์ ํ๋ค.
/** ๋ถ์์ ํ ์ ๊ท์ ํจํด์ ์ฌ๋ฐ๋ฅธ ํ์์ผ๋ก ๋งคํํ๋ ํ
์ด๋ธ */
export const REGEX_NORMALIZATION_MAP: Record<string, string> = {
'/[\\S]{1,128}/': '/^[\\S]{1,128}$/',
}
์ฐธ๊ณ : ํ์ฌ DB์์์๋ {1,128}๋ง ์กด์ฌํ์ง๋ง, ์ถํ ๋ค๋ฅธ ์ซ์ ๋ฒ์๊ฐ ์ถ๊ฐ๋ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํด\d ํจํด์ ํ์ฉํ๋ ํ์ฅ๋ ๊ฒํ ์ค์ด๋ค.
๊ฒฐ๋ก
์์
๊ท๋ชจ ์์ฒด๋ ํฌ์ง ์์์ง๋ง, ์ด์ ๋ฐ๊ฒฌ → ์์ธ ๋ถ์ → ๋์ ๋น๊ต → ํด๊ฒฐ์ ํ๋ฆ์ ์ง์ ๊ฒฝํํ ์๋ฏธ ์๋ ์ผ์ด์ค์๋ค. ํนํ, “๊ฐ์ ์ ๊ท์์ด ์ธ์ด๋ณ๋ก ๋ค๋ฅด๊ฒ ๋์ํ ์ ์๋ค”๋ ์ ์ ๋ค์๊ธ ๊นจ๋ฌ์๊ณ , ํ๋ก ํธ์๋์์ ์๋ฒ ๋ก์ง์ ์ผ๋ถ ์ด์ํ ๋๋ ์ธ์ด ๊ฐ ์ฐจ์ด๋ฅผ ๋ฐ๋์ ๊ณ ๋ คํด์ผ ํ๋ค๋ ๊ตํ์ ์ป์๋ค.
๋๊ธ