- ์ผ์ ํ ํจํด์ ๊ฐ์ง ๋ฌธ์์ด์ ์งํฉ์ ํํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํ์์ธ์ด
- ๋ฌธ์์ด์ ๋์์ผ๋ก ํจํด ๋งค์นญ ๊ธฐ๋ฅ์ ์ ๊ณตํจ.
/pattern/[, flags]
let regexp = /the/gi;
new RegExp(pattern,[, flags])
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.test(target); // true
- ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ ๋ํด ์ ๊ท ํํ์์ ํจํด์ ๊ฒ์ํ์ฌ ๋งค์นญ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํ
- ๋งค์นญ ๊ฒฐ๊ณผ๊ฐ ์๋ ๊ฒฝ์ฐ null์ ๋ฐํ.
๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ฐํ
const target = 'Is this all there is';
regexp = /is/gi;
console.log(regexp.test(target)); // true
- ๋์ ๋ฌธ์์ด๊ณผ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ ๊ท ํํ์๊ณผ์ ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํ
- exec๋ฉ์๋๋ gํ๋๊ทธ๋ฅผ ์ฌ์ฉํด๋ ์ฒซ๋ฒ์งธ ๋งค์นญ๊ฒฐ๊ณผ๋ง ๋ฐํํ์ง๋ง match๋ฉ์๋๋ gํ๋๊ทธ ์ง์ ์ ๋ชจ๋ ๋งค์นญ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํจ.
const regexp = /is/g;
target.match(regexp); // ["is","is"]
- ์ฒซ๋ฒ์งธ ์ธ์์ ํด๋นํ๋ ๋ฌธ์๊ฐ ๋๋ฒ์งธ ์ธ์๋ก ๋ณ๊ฒฝ๋จ.
- ์๋ณธ์ด ์์ ๋์ง ์์.
const regexp = /is/gi;
console.log("๊ต์ฒด", target.replace(regexp, "Rabbit"));
// ๊ต์ฒด Rabbit thRabbit all there Rabbit
console.log("์๋ณธ", target);
// ์๋ณธ Is this all there is
- ํ๋ ์ด์์ ํ๋๊ทธ๋ฅผ ๋์์ ์ค์ ํ ์ ์์.
- ์ด๋ ํ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํด์ ํจํด์ ๊ฒ์ํ๊ณ , ์ฒซ๋ฒ์งธ ๋งค์นญํ ๋์๋ง ๊ฒ์ํ๊ณ ์ข ๋ฃํจ.
i(Ignore case)
: ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ์ง ์๊ณ ํจํด์ ๊ฒ์.g(Global)
: ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๊ณ ๋ชจ๋ ๋ฌธ์์ด์ ์ ์ญ ๊ฒ์ํจ.m(Multi line)
: ๋ฌธ์์ด์ ํ์ด ๋ฐ๋๋๋ผ๋ ํจํด๊ฒ์์ ๊ณ์ํจ. ๋ฌธ์์ด์์ ์ค๋ฐ๊ฟ์ด ๋์ด์ด์ ธ ์๋ ์ค๋ง๋ค ์ฒดํฌํจ!!๐พ#01
const str = `
010-1234-5678
thesecon@gmail.com
https://www.omdbapi.com/?apikey=7035c60c&s=frozen
The quick brown fox jumps over the lazy dog.
abbcccdddd
http://localhost:1234
`;
let regexp = /the/;
let regexpG = /the/g; // ์ผ์นํ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ๋ฐฐ์ด๋ก ์ถ๋ ฅ
let regexpI = /the/i; // ๋์๋ฌธ์ ๋ฌด์ํ๊ณ ์ฒดํฌํจ
let regexpGi = /the/gi;
console.log("match-ํ๋๊ทธX", str.match(regexp));
console.log("match-gํ๋๊ทธ", str.match(regexpG));
console.log("match-iํ๋๊ทธ", str.match(regexpI));
console.log("match-giํ๋๊ทธ", str.match(regexpGi));
๐พ#02 - $ : ๋ฌธ์ฅ์ ๋์ ๋ปํจ.
/* ๋ฌธ์ฅ ๋์ .(์จ์ )์ด ์๋์ง ์ฒดํฌ */
console.log(str.match(/\.$/gi)); // ํ๋์ ๋ฌธ์์ด ๋์ ํ๋ฒ๋ง ์ฒดํฌํจ
console.log(str.match(/\.$/gim)); // ๋ฌธ์์ด์์ ์ค๋ฐ๊ฟ์ด ๋์ด์ด์ ธ ์๋ ์ค๋ง๋ค ์ฒดํฌํจ!!
ํจํด์ /๋ก ์ด๊ณ ๋ซ์ผ๋ฉฐ ๋ฌธ์์ด์ ๋ฐ์ดํ๋ ์๋ตํจ.
^
: [...]๋ด์ ^์ Not์ ์๋ฏธ, [...] ๋ฐ์์์ ^๋ ๋ฌธ์์ด์ ์์์ ์๋ฏธ$
: ๋ฌธ์์ด์ ๋ง์ง๋ง์ ์๋ฏธ.
: ์์์ ๋ฌธ์ ํ ๊ฐ๋ฅผ ์๋ฏธ(๊ณต๋ฐฑ ํฌํจ!)+
: ์์ ํจํด์ด ์ต์ ํ๋ฒ ์ด์ ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ์๋ฏธ, {1,}๊ณผ ๊ฐ์ ์๋ฏธ?
: ์์ ํจํด์ด ์ต๋ ํ๋ฒ(0ํฌํจ) ์ด์ ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ์๋ฏธ. {0,1}๊ณผ ๊ฐ์, ab?
: b๊ฐ ์๊ฑฐ๋ b์ ์ผ์น *
: ๋ฐ๋ณต ์ฌ๋ถ ํํ - (aa)* (aa) ๊ฐ 0๊ฐ ~ infinite๊น์ง ๋ชจ๋ ๊ฐ๋ฅ |
: or๊ณผ ๊ฐ์ ์๋ฏธ, a|b
: a ๋๋ b์ ์ผ์น [abc]
: a๋๋ b๋๋ c[a-z]
: a๋ถํฐ z์ฌ์ด์ ๋ฌธ์ ๊ตฌ๊ฐ์ ์ผ์น(์์ด ์๋ฌธ์)[A-Z]
: A๋ถํฐ Z์ฌ์ด์ ๋ฌธ์ ๊ตฌ๊ฐ์ ์ผ์น(์์ด ์๋ฌธ์)[0-9]
: 0๋ถํฐ 9์ฌ์ด์ ๋ฌธ์ ๊ตฌ๊ฐ์ ์ผ์น(์ซ์)[๊ฐ-ํฃ]
: ๊ฐ๋ถํฐ ํฃ์ฌ์ด์ ๋ฌธ์ ๊ตฌ๊ฐ์ ์ผ์น(ํ๊ธ)\s
: ์ฌ๋ฌ๊ฐ์ง ๊ณต๋ฐฑ๋ฌธ์(์คํ์ด์ค, ํญ ๋ฑ)๋ฅผ ์๋ฏธํจ. [\t\r\n\v\f]์ ๊ฐ์ ์๋ฏธ.\b
: 63๊ฐ ๋ฌธ์์ ์ผ์นํ์ง ์๋ ๋ฌธ์ ๊ฒฝ๊ณ(Boundary). ex) \b\w{2,3}\b -> 010-123-1234์์ ['010', '123']์ ๋ฐํํจ.\d
: ์ซ์(Disit)์ ์ผ์น, [0-9]์ ๊ฐ์ ์๋ฏธ\D
: ์ซ์๊ฐ ์๋ ๋ฌธ์๋ฅผ ์๋ฏธ, [^0-9]\w
: 63๊ฐ ๋ฌธ์(Wold, ๋์์๋ฌธ52๊ฐ + ์ซ์10๊ฐ + _)์ ์ผ์น. ์ฆ [A-Za-z0-9_]์ ๊ฐ์ ์๋ฏธ\W
: ์ํ๋ฒณ, ์ซ์, ์ธ๋์ค์ฝ์ด๊ฐ ์๋ ๋ฌธ์๋ฅผ ์๋ฏธ, [^A-Za-z0-9_]{m,n}
: ๋ฐ๋ณต๊ฒ์, ์ต์ m๋ฒ, ์ต๋ n๋ฒ ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ์๋ฏธ. ๋ค์ ๊ณต๋ฐฑ์ด ์์ผ๋ฉด ์ ์์ ์ผ๋ก ์๋ํ์ง ์์.{n}
: n๋ฒ ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ์๋ฏธ, {n,n}๊ณผ ๊ฐ์ ์๋ฏธ.{n,}
: ์ต์ n๋ฒ ์ด์ ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ์๋ฏธ.(?=)
: ์์ชฝ ์ผ์น(Lookahead)(?<=)
: ๋ค์ชฝ ์ผ์น(Lookabehind)๐พ #01 @๋ฅผ ๊ธฐ์ค์ผ๋ก ์, ๋ค ๋ฌธ์ ๋ฐํํ๊ธฐ
const str = 'thesecon@gmail.com';
console.log(str.match(/.{1,}(?=@)/g)); // ['thesecon']
console.log(str.match(/(?<=@).{1,}/g)); // ['gmail.com']
๐พ #02 ๋ถํด๋์ง ์์ ๋จ์ด ๋ ๋ฒจ๋ก ๊ฒ์ํ๊ธฐ ์ํด์๋ +๋ฅผ ํจ๊ป ์ฌ์ฉ
const target = 'A AA B BB Aa Bb';
const regexp = /A+|B+/g;
target.match(regexp); // ["A", "AA", "B", "BB", "Aa", "Bb"]
๐พ #03 []๋ด์ ๋ฌธ์๋ or๋ก ๋์ํ๋ค. ๋ค์ +๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ํจํด์ ํ๋ฒ ์ด์ ๋ฐ๋ณตํ๋ค.
const regexp = /[AB]+/g;
target.match(regexp); // ["A", "AA", "B", "BB", "Aa", "Bb"]
๐พ #04 ๋ฒ์ ์ง์ ํ๋ ค๋ฉด []๋ด์ -์ ์ฌ์ฉ.
// ๋๋ฌธ์๋ง
let regexp = /[A-Z]/g;
target.match(regexp); // ["A", "AA", "B", "BB", "A", "B"]
//๋์๋ฌธ์
regexp = /[A-Za-z]/g;
target.match(regexp); // ["A", "AA", "B", "BB", "Aa", "Bb"]
const url = 'https://example.com';
/^https?:\/\//.test(url); // true
/^(http|https):\/\//.test(url); // true
const fileName = 'index.html';
/html$/.test(fileName); // true
const target = '12345'
/^\d+$/.test(target); // true
const target = ' hi'
console.log(/^[\s]+/.test(target)); // true
console.log(/^\s+/.test(target)); // true
// ์ํ๋ฒณ ๋์๋ฌธ์ ๋๋ ์ซ์๋ก ์์ํ๊ณ ๋๋๋ฉฐ 4~10์๋ฆฌ์ธ์ง ๊ฒ์ฌ
const id = 'abc123'
console.log(/^[A-Za-z0-9]{4,10}$/.test(id)); // true
const cellphone = '010-1234-5678';
/^\d{3}-\d{4}-\d{4}$/.target(cellphone); // true
const target = 'abc#123';
(/[^A-Za-z0-9]/gi).test(target); // true
// ํน์ ๋ฌธ์ ์ ๊ฑฐ
target.replace(/[^A-Za-z0-9]/gi,''); // 'abc123'