: ์ผ์ ํ 'ํจํด'์ ๊ฐ์ง '๋ฌธ์์ด'์ '์งํฉ'์ ํํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ 'ํ์ ์ธ์ด(formal language)'
: ๋ฌธ์์ด์ ์ผ์ ํ ๊ท์น์ ํํ
๐ ํจํดํ ์ฐธ๊ณ
์ ๊ทํํ์ (Regex) ์ ๋ฆฌ
[JavaScript] ์ ๊ท ํํ์(RegExp) ์ฌ์ฉํ๊ธฐ (๊ฐ๋ ํธ)
โ ํจํด์ ๋ชจ๋ ์ธ์ธ ์ ์์ผ๋ ํ์ํ ๋ ํ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑ!
[์์ ]
๊ฐ๋ณ ์ซ์ - /[0-9]/ // 0๋ถํฐ 9์ฌ์ด์ ์ซ์ ์ฐพ๊ธฐ
๊ฐ๋ณ ๋ฌธ์ - /[to]/ // t ๋๋ o๊ฐ ๋ค์ด๊ฐ ๋ฌธ์ ์ฐพ๊ธฐ
๋จ์ด - /filter/ // filter๋ผ๋ ๋จ์ด(ํต์งธ๋ก) ์ฐพ๊ธฐ
ํธ๋ํฐ ๋ฒํธ - /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/
/*
์ซ์ 01๋ก ์์ /
๊ทธ ํ์ 0,1,6,7,8,9 ์ค์ ํ๋๊ฐ ์ฌ ์๋ ์๊ณ /
ํ์ดํ(-)์ด 1๊ฐ ์ฌ ์๋ ์๊ณ /
0๋ถํฐ 9์ฌ์ด์ ์ซ์๊ฐ 3~4๊ฐ /
ํ์ดํ(-)์ด 1๊ฐ ์ฌ ์๋ ์๊ณ /
0๋ถํฐ 9์ฌ์ด์ ์ซ์๊ฐ 4๊ฐ๋ก ๋
*/
: ์ ๊ท ํํ์์ ๊ฒ์ ๋ฐฉ์์ ์ค์
: ๋ชจ๋ ๋ฌธ์๋ฅผ ๊ฒ์
g๊ฐ ์์ผ๋ฉด ์๋๋ ์ฒ์ ๋ฐ๊ฒฌ๋ ๊ฒฐ๊ณผ๋ง ์ถ๋ ฅ๋๋ค.
g๊ฐ ์์ผ๋ฉด ์๋ ๋ชจ๋ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
str = 'Hi wecode! I am code kim.';
const regexp1 = /code/; // we'code'
const regexp2 = /code/g; // we'code', 'code' kim
: ์์ด ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์(๋ฌด์ํจ)
i๊ฐ ์์ผ๋ฉด ์๋๋ code์ Code๋ ๋ค๋ฅด๋ค. ==> ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํจ!
ig๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋์๋ฌธ์ ๊ตฌ๋ถ์์ด ํํ์์ ๋ชจ๋ ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
: ๋ฌธ์์ด์ ํ์ด ๋ฐ๋๋๋ผ๋ ํจํด ๊ฒ์์ ๊ณ์ํจ
: lastIndex ์์ฑ์ ์ด์ฉํด ์ํ๋ ์์น์์ ๊ฒ์์ ์์
const str = "Cats love cats, and we love cats."
const regExp = /cats/igy;
exp.lastIndex = 4; // index 4 ์ดํ๋ถํฐ ๊ฒ์
โฌ๏ธ
lastIndex๋ฅผ ์ง์ ํ ๋ค ํ๋๊ทธ y๋ก ๊ฒ์ํ๋ฉด, ๊ทธ ์์น์์ ๊ฒ์์ด ์์๋๋ค.: ์ ๋ ์ฝ๋ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌ
: ๊ฐํ(\n)์ ๋ฌด์ํ์ฌ ๋จ์ผ ๋ผ์ธ์ผ๋ก ์ทจ๊ธ
์ต๊ทผ์๋ ๋ง์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ๋์ง ์์ !
: ๊ฑฐ์ ๋๋ถ๋ถ ๋ฆฌํฐ๋ด ๋ฐฉ์์ ์ด์ฉํจ. ์ ์ ์ธ ๋ฐฉ์.
const regexp1 = /pattern/; // --> /ํจํด/ (ํ๋๊ทธ โ)
const regexp2 = /pattern/gmi; // --> /ํจํด/ํ๋๊ทธ (ํ๋๊ทธ g, m, i โญ๏ธ)
: ์ํฉ์ ๋ฐ๋ผ '๋์ '์ผ๋ก ์์ฑ๋ ๋ฌธ์์ด์ ๊ฐ์ง๊ณ ์ ๊ท ํํ์์ ๋ง๋ค์ด์ผ ํ ๋ ์ฌ์ฉ. ${...}
์ด์ฉ ๊ฐ๋ฅ.
const regexp1 = new RegExp("pattern", "flags");
const regexp2 = new RegExp("^abc", "gi");
let tag = prompt("์ด๋ค ํ๊ทธ๋ฅผ ์ฐพ๊ณ ์ถ๋์?", "h2");
let regexp = new RegExp(`<${tag}>`);
// ํ๋กฌํํธ์์ "h2"๋ผ๊ณ ๋๋ตํ ๊ฒฝ์ฐ, /<h2>/์ ๋์ผํ ์ญํ ์ ํฉ๋๋ค.
ex)
let str = "We will, we will rock you";
alert( str.match(/we/gi) ); // We, we
ex)
let str = "We will, we will";
// ํ๋๊ทธ g ์์
alert( str.replace(/we/i, "I") ); // I will, we will
// ํ๋๊ทธ g ์์
alert( str.replace(/we/ig, "I") ); // I will, I will
ex)
let str = "I love JavaScript";
let regexp = /LOVE/i;
alert( regexp.test(str) ); // true
const exptext = /^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/;
if (exptext.test(check.value) == false) {
//์ด๋ฉ์ผ ํ์์ด ์ํ๋ฒณ+์ซ์@์ํ๋ฒณ+์ซ์.์ํ๋ฒณ+์ซ์ ํ์์ด ์๋๊ฒฝ์ฐ
alert("์
๋ ฅํ ๋ฉ์ผํ์์ด ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.");
check.focus();
return false;
}
const regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;
//์ฌ์ฉ์๊ฐ ์
๋ ฅํ ID๊ฐ ํ๊ธ์ด ํฌํจ๋์ด ์๋์ง Check ํฉ๋๋ค.
function idCheck () {
// ์
๋ ฅํ ID๋ฅผ Checkํ๊ธฐ ์ํด ๊ฐ์ ธ์ต๋๋ค.
var titleCheck = $("titleId").val;
// ์ ๊ทํํ์์ผ๋ก ํ๊ธ๋ง ์ ํํ๋๋ก ๋ง๋ญ๋๋ค.
var languageCheck = /[ใฑ-ใ
|ใ
-ใ
ฃ|๊ฐ-ํฃ]/;
// ์
๋ ฅํ ID์ ์ ๊ทํํ์์ ๋น๊ตํ์ฌ ํ๊ธ ์ฌ๋ถ๋ฅผ ํ๋จํฉ๋๋ค.
// test์ธ์๋ search ,exec , match๋ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
if (languageCheck.test(titleCheck)) {
alert("ID์ ํ๊ธ์ด ํฌํจ๋์ด ์์ต๋๋ค.");
return;
}
๐ก ์ ๊ทํํ์ test ์ฌ์ดํธ โช https://regexr.com
๐์ฐธ๊ณ ์ฌ์ดํธ
https://www.codeguage.com/courses/regexp/flags
https://valuefactory.tistory.com/151
์ ๊ทํํ์ (Regex) ์ ๋ฆฌ
[JavaScript] ์ ๊ท ํํ์(RegExp) ์ฌ์ฉํ๊ธฐ (๊ฐ๋ ํธ)
https://ko.javascript.info/regexp-introduction