π μ κ· ννμ ?
μΌμ ν ν¨ν΄μ κ°μ§ λ¬Έμμ΄μ μ§ν©μ νννκΈ° μν΄ μ¬μ©νλ νμ μΈμ΄formal languageμ΄λ€.
μλ°μ€ν¬λ¦½νΈμ κ³ μ λ¬Έλ²μ μλλ€. λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄μ μ½λ μλν°μ λ΄μ₯λμ΄ μλ€.
μ κ·ννμμ λ¬Έμμ΄μ λμμΌλ‘ ν¨ν΄ λ§€μΉ κΈ°λ₯μ μ 곡νκΈ° λλ¬Έμ λ°λ³΅λ¬Έμ΄λ 쑰건문μ μ¬μ©νμ§ μκ³ λ κ°λ¨ν 체ν¬ν μ μλ€.
λ€λ§, μ¬λ¬κ°μ§ κΈ°νΈλ₯Ό νΌν©νμ¬ μ¬μ©νκΈ° λλ¬Έμ κ°λ μ±μ΄ μ’μ§ μλ€. ^!^
π μ κ· ννμ μμ±
βΎ μ κ· ννμ 리ν°λ΄
const target = 'Is this all there is?';
// ν¨ν΄: is
// νλκ·Έ: i => λμλ¬Έμλ₯Ό ꡬλΆνμ§ μκ³ κ²μνλ€.
const regexp = /is/i;
// test λ©μλ
// target λ¬Έμμ΄μ λν΄ μ κ· ννμμ ν¨ν΄μ κ²μνμ¬ λ§€μΉ κ²°κ³Όλ₯Ό booleanκ°μΌλ‘ λ°ννλ€.
regexp.test(target); // true
βΎ RegExp μμ±μ ν¨μ
const target = 'Is this all there is?';
const regexp = new RegExp(/is/i);
// const regexp = new RegExp(/is/, 'i');
// const regexp = new RegExp('is', 'i');
regexp.test(target); // true
π νλκ·Έ flag
νλκ·Έ | μλ―Έ | μ€λͺ |
i | Ignore case | λμλ¬Έμλ₯Ό ꡬλ³νμ§ μκ³ ν¨ν΄μ κ²μνλ€ |
g | Global | ν¨ν΄κ³Ό μΌμΉνλ λ¬Έμμ΄μ βμ μμ βμΌλ‘ κ²μνλ€. |
m | Multi line | λ¬Έμμ΄μ νμ΄ λ°λλλΌλ ν¨ν΄ κ²μμ κ³μνλ€. |
s | Dotall | .μ΄ κ°νλ¬Έμ \n λ ν¬ν¨νμ¬ κ²μνκ²λ νλ€. (μλλ \n κ²μ μλ¨) |
u | Unicode | μ λμ½λ κ΄λ ¨ κΈ°λ₯μ νμ±νμμΌ κ²μνλ€. |
y | stickY | λ¬Έμμ΄ λ΄ νΉμ μμΉμμ κ²μμ μ§ννλ€. (feat. regexp.lastIndex) |
π ν¨ν΄ pattern
βΎ λ¬Έμμ΄ κ²μ
const target = 'Is this all there is?';
const regExp = /is/;
regExp.test(target);
// targetκ³Ό μ κ· ννμμ΄ λ§€μΉνλμ§ ν
μ€νΈνλ€.
// true
target.match(regExp);
// targetκ³Ό μ κ· ννμμ λ§€μΉ κ²°κ³Όλ₯Ό ꡬνλ€.
// ['is', index: 5, input: 'Is this all there is?', groups: undefined]
const target = 'Is this all there is?';
const regExp = /is/i;
target.match(regExp);
// ['Is', index: 0, input: 'Is this all there is?', groups: undefined]
const target = 'Is this all there is?';
const regExp = /is/ig;
target.match(regExp);
// ['Is', 'is', 'is']
βΎ μμμ λ¬Έμμ΄ κ²μ
β ...
const target = 'Is this all there is?';
const regExp = /.../g;
// .μ΄ 3κ° -> μμμ 3μ리 λ¬Έμμ΄μ (λμλ¬Έμ ꡬλ³νμ¬) μ μ κ²μνλ€.
target.match(regExp);
// ['Is ', 'thi', 's a', 'll ', 'the', 're ', 'is?']
βΎ λ°λ³΅ κ²μ
β {n}
const target = 'A AA B BB Aa Bb AAA';
const regExp = /A{1,2}/g;
// 'A'κ° μ΅μ 1λ² && μ΅λ 2λ² λ°λ³΅λλ λ¬Έμμ΄μ μ μ κ²μνλ€.
// {n}μ μμ ν¨ν΄μ΄ nλ² λ°λ³΅λλ λ¬Έμμ΄μ μλ―Ένλ€. {n} === {n,n}
target.match(regExp);
// ['A', 'AA', 'A', 'AA', 'A']
const target = 'A AA B BB Aa Bb AAA';
const regExp = /A{2}/g;
// 'A'κ° 2λ² λ°λ³΅λλ λ¬Έμμ΄μ μ μ κ²μνλ€.
target.match(regExp);
// ['AA', 'AA']
const target = 'A AA B BB Aa Bb AAA';
const regExp = /A{2,}/g;
// 'A'κ° 2λ² "μ΄μ" λ°λ³΅λλ λ¬Έμμ΄μ μ μ κ²μνλ€.
// {n,}μ μμ ν¨ν΄μ΄ μ΅μ nλ² μ΄μ λ°λ³΅λλ λ¬Έμμ΄μ μλ―Ένλ€.
target.match(regExp);
// ['AA', 'AAA']
β +
const target = 'A AA B BB Aa Bb AAA';
const regExp = /A+/g;
// 'A'κ° μ΅μ 1λ² μ΄μ λ°μ‘±λλ λ¬Έμμ΄μ μ μ κ²μνλ€.
// +λ μμ ν¨ν΄μ΄ μ΅μ νλ² μ΄μ λ°λ³΅λλ λ¬Έμμ΄μ μλ―Ένλ€. + === {1,}
target.match(regExp);
// ['A', 'AA', 'A', 'AAA']
β ?
const target = 'color colour colouuuuur';
const regExp = /colou?r/g;
// 'colo' λ€μ 'u'κ° μ΅λ 1λ² μ΄μ(0λ² or 1λ²) λ°λ³΅λκ³ 'r'μ΄ μ΄μ΄μ§λ λ¬Έμμ΄μ μ μ κ²μνλ€.
// ?λ μμ ν¨ν΄μ΄ μ΅λ 1λ²(0λ² ν¬ν¨) μ΄μ λ°λ³΅λλ λ¬Έμμ΄μ μλ―Ένλ€.
target.match(regExp);
// ['color', 'colour']
βΎ OR κ²μ
β |
const target = 'A AA B BB Aa Bb';
const regExp = /A|B/g;
// 'A' λλ 'B'λ₯Ό μ μ κ²μνλ€.
// |λ orμ μλ―Έλ₯Ό κ°μ§λ€.
target.match(regExp);
// ['A', 'A', 'A', 'B', 'B', 'B', 'A', 'B']
const target = 'A AA B BB Aa Bb';
const regExp = /A+|B+/g;
// 'A' λλ 'B'κ° 1λ² μ΄μ λ°λ³΅λλ λ¬Έμμ΄μ μ μ κ²μνλ€.
// λΆν΄λμ§ μμ λ¨μ΄ λ λ²¨λ‘ κ²μνκΈ° μν΄μλ +λ₯Ό ν¨κ» μ¬μ©νλ€.
target.match(regExp);
// ['A', 'AA', 'B', 'BB', 'A', 'B']
β [ ]
const target = 'A AA B BB Aa Bb';
const regExp = /[AB]+/g;
// 'A' λλ 'B'κ° 1λ² μ΄μ λ°λ³΅λλ λ¬Έμμ΄μ μ μ κ²μνλ€.
// [] λ΄μ λ¬Έμλ orλ‘ λμνλ€. λ€μ +λ₯Ό λνλ©΄ μμ ν¨ν΄μ νλ² μ΄μ λ°λ³΅νλ€.
target.match(regExp);
// ['A', 'AA', 'B', 'BB', 'A', 'B']
const target = 'A AA BB ZZ Aa Bb';
const regExp = /[A-Z]+/g;
// 'A' ~ 'Z'κ° 1λ² μ΄μ λ°λ³΅λλ λ¬Έμμ΄μ μ μ κ²μνλ€.
target.match(regExp);
'Front-end > JS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
22.02.13 λ©΄μ Q & A (0) | 2022.02.13 |
---|---|
λ³μ, ν¨μ, ν΄λμ€ νΈμ΄μ€ν μ 리 (0) | 2021.10.05 |
μλ°μ€ν¬λ¦½νΈ λ€μ΄ν°λΈ κ°μ²΄μ νΈμ€νΈ κ°μ²΄ Native Object & Host Object (0) | 2021.09.22 |
μλ°μ€ν¬λ¦½νΈ νλ‘λ―Έμ€μ λΉλκΈ° μ²λ¦¬ Promise & Asynchronous (0) | 2021.09.21 |
μλ°μ€ν¬λ¦½νΈ μ½λ°± ν¨μμ λΉλκΈ° μ²λ¦¬ Call back func & Asynchronous (0) | 2021.09.20 |
λκΈ