
β μ κ· ννμμ΄λ?
μΌμ ν ν¨ν΄μ κ°μ§ λ¬Έμμ΄μ μ§ν©μ νννκΈ° μν΄ μ¬μ©νλ νμ μΈμ΄(formal language)λ€.
μ κ· ννμμ μλ°μ€ν¬λ¦½νΈμ κ³ μ λ¬Έλ²μ΄ μλλ©°, λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄μ μ½λ μλν°μ λ΄μ₯λμ΄ μλ€.
μλ°μ€ν¬λ¦½νΈλ ν(Perl)μ μ κ· ννμ λ¬Έλ²μ ES3λΆν° λμ νλ€.
β μ κ· ννμμ μμ±

β RegExp λ©μλ
RegExp.prototype.exec
μΈμλ‘ μ λ¬λ°μ λ¬Έμμ΄μ λν΄ μ κ· ννμμ ν¨ν΄μ κ²μνμ¬ λ§€μΉ κ²°κ³Όλ₯Ό λ°°μ΄λ‘ λ°ν.
λ§€μΉ κ²°κ³Όκ° μλ κ²½μ° nullμ λ°ν.
exec λ©μλλ λ¬Έμμ΄ λ΄μ λͺ¨λ ν¨ν΄μ κ²μνμ¬ g νλκ·Έλ₯Ό μ§μ ν΄λ 첫 λ²μ§Έ λ§€μΉ κ²°κ³Όλ§ λ°νν¨
RegExp.prototype.test
μΈμλ‘ μ λ¬λ°μ λ¬Έμμ΄μ λν΄ μ κ· ννμμ ν¨ν΄μ κ²μνμ¬ λ§€μΉ κ²°κ³Όλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ν.
String.prototype.match
λμ λ¬Έμμ΄κ³Ό μΈμλ‘ μ λ¬λ°μ μ κ· ννμκ³Όμ λ§€μΉ κ²°κ³Όλ₯Ό λ°°μ΄λ‘ λ°ν.
g νλκ·Έκ° μ§μ λλ©΄ λͺ¨λ λ§€μΉ κ²°κ³Όλ₯Ό λ°°μ΄λ‘ λ°νν¨
β νλκ·Έ
i -> Ignore case -> λμλ¬Έμλ₯Ό ꡬλ³νμ§ μκ³ ν¨ν΄μ κ²μ
g -> Global -> λμ λ¬Έμμ΄ λ΄μμ ν¨ν΄κ³Ό μΌμΉνλ λͺ¨λ λ¬Έμμ΄μ μ μ κ²μ
m -> Multi line -> λ¬Έμμ΄μ νμ΄ λ°λλλΌλ ν¨ν΄ κ²μμ κ³μν¨
β ν¨ν΄
1. μμμ λ¬Έμμ΄ κ²μ
.μ μμμ λ¬Έμ ν κ°λ₯Ό μλ―Έ
const regExp = /.../g;
2. λ°λ³΅ κ²μ
{m,n}μ μ΅μ mλ², μ΅λ nλ² λ°λ³΅λλ λ¬Έμμ΄μ μλ―Έ
const regExp = /A{1,2}/g;
{n}μ {n,n}κ³Ό κ°λ€. (nλ² λ°λ³΅λλ λ¬Έμμ΄)
{n,}μ μ΅μ nλ² μ΄μ λ°λ³΅λλ λ¬Έμμ΄
+λ μ΅μ ν λ² μ΄μ λ°λ³΅λλ λ¬Έμμ΄ μ¦ {1, }κ³Ό κ°λ€.
const regExp = /A+/g;
?λ μ΅λ ν λ²(0λ² ν¬ν¨) μ΄μ λ°λ³΅λλ λ¬Έμμ΄μ μλ―Έ. μ¦ {0,1}κ³Ό κ°λ€. (optionalμ μλ―Έ)
const regExp = /colou?r/g;
(uλ μμ΄λ λκ³ μμ΄λ λ¨)
3. OR κ²μ
|μ orμ μλ―Έλ₯Ό κ°λλ€.
const regExp = /A|B/g;
λΆν΄λμ§ μμ λ¨μ΄ λ λ²¨λ‘ κ²μνκΈ° μν΄μλ +λ₯Ό ν¨κ» μ¬μ©
const regExp = /A+|B+/g;
[]λ₯Ό μ¬μ©νμ¬ κ°λ¨ν ννν μ μλ€. [] λ΄μ λ¬Έμλ orλ‘ λμνλ€. κ·Έ λ€μ +λ₯Ό μμνλ©΄ μμ ν¨ν΄γ λ₯΄ ν λ² μ΄μ λ°λ³΅νλ€.
const regExp = /[AB]+/g;
λ²μλ₯Ό μ§μ νλ €λ©΄ []λ΄μ -λ₯Ό μ¬μ©νλ€.
const regExp = /[A-Z]+/g;
/dλ [0-9]μ κ°λ€. /Dλ /dμ λ°λλ‘ λμνλ€. μ¦ /Dλ μ«μκ° μλ λ¬Έμλ₯Ό μλ―Ένλ€.
/wλ μνλ²³, μ«μ, μΈλμ€μ½μ΄λ₯Ό μλ―Ένλ€. μ¦ [A-Za-z0-9_]μ κ°λ€. /Wλ /wμ λ°λλ‘ λμνλ€.
μ¦ /Wλ μνλ²³, μ«μ, μΈλμ€μ½μ΄κ° μλ λ¬Έμλ₯Ό μλ―Ένλ€.
4. NOT κ²μ
[...] λ΄μ ^μ notμ μλ―Έλ₯Ό κ°λλ€.
5. μμ μμΉλ‘ κ²μ
[...] λ°μ ^μ λ¬Έμμ΄μ μμμ μλ―Ένλ€.
6. λ§μ§λ§ μμΉλ‘ κ²μ
$λ λ¬Έμμ΄μ λ§μ§λ§μ μλ―Ένλ€.
β μμ£Ό μ¬μ©νλ μ κ· ννμ
νΉμ λ¨μ΄λ‘ μμνλμ§ κ²μ¬
/^https?:\/\//.test(url);
νΉμ λ¨μ΄λ‘ λλλμ§ κ²μ¬
/html$/.test(fileName);
μ«μλ‘λ§ μ΄λ£¨μ΄μ§ λ¬Έμμ΄μΈμ§ κ²μ¬
/^/d+$/.test(target);
νλ μ΄μμ 곡백μΌλ‘ μμνλμ§ κ²μ¬
/^[/s]+/.test(target);
μμ΄λλ‘ μ¬μ© κ°λ₯νμ§ κ²μ¬
/^[A-Za-z0-9]{4,10}$/.test(id);
λ©μΌ μ£Όμ νμμ λ§λμ§ κ²μ¬
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$\.test(email);
νΈλν° λ²νΈ νμμ λ§λμ§ κ²μ¬
/^\d{3}-\d{3,4}-\d{4}$/.test(cellphone);
νΉμ λ¬Έμ ν¬ν¨ μ¬λΆ κ²μ¬
(/[^A-Za-z0-9]/gi).test(target);
νΉμ λ¬Έμλ₯Ό μ κ±°ν λλ String.prototype.replace λ©μλλ₯Ό μ¬μ©νλ€.
target.replace(/[^A-Za-z0-9]/gi, '');'π λͺ¨λ₯λ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| 23μ₯. μ€ν 컨ν μ€νΈ(LexicalEnvironmentμ VariableEnvironment) (1) | 2025.05.20 |
|---|---|
| 19μ₯. prototypeκ³Ό __proto__μ μ°¨μ΄? (0) | 2025.05.06 |
| 17μ₯. μμ±μ ν¨μμ μν κ°μ²΄ μμ± (0) | 2025.02.28 |
| 16μ₯. νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈ (0) | 2025.02.28 |