[Js] μ κ· ννμ | μ»΄νμΌ? | μ κ·ννμ 리ν°λ΄
- -
ν΄λΉ ν¬μ€ν μ "μνμ½λ©"μ μ΄κ³ μ λμ κ°μλ₯Ό κΈ°λ°μΌλ‘ μ¬λ¦° κ²μκΈ μ λλ€.
μμ μ μΈ μ©λκ° μλ, κ°μΈ κ³΅λΆ μ 리 λͺ©μ μΌλ‘ μ¬λ¦¬λ κΈμμ 미리 μ립λλ€.
μ κ·ννμ
μ κ·ννμ(regular expression)μ λ¬Έμμ΄μμ νΉμ ν λ¬Έμλ₯Ό μ°Ύμλ΄λ λꡬλ€.
μ΄ λꡬλ₯Ό μ΄μ©νλ©΄ μμμ€μ΄ νμν μμ μ νμ€λ‘ λλΌ μ μλ€.
μ κ·ννμμ νλμ μΈμ΄λΌκ³ ν μ μλ€.
κ·Έλ¬λ―λ‘ λ³Έ μμ μμ μ κ·ννμμ λͺ¨λ κ²μ λ€λ£¨λ κ²μ λΆκ°λ₯νλ€.
λ³Έ μμ μ μλμ κ°μ μ λ΅μ μ·¨νκ³ μλ€.
- μ λ¬Έμμκ² μ κ·ννμμ΄ λ¬΄μμΈκ°μ λν κ°λ μ μλ €μ€λ€. μ΄μ¬μμκ²λ μ¬μ©λ²κΉμ§ 곡λΆνλ κ²μ 무리λ€. λμ€μ λ¬Έμλ₯Ό μ²λ¦¬ν΄μΌνλ μν©μ΄ μκ²Όμ λ μ΄κ³³μ μ°Ύμμ€κ±°λ λ³Έ μμ μ μμ£Όνμ λ λ§μ§λ§ λ¨κ³λ‘ λ³Έ μμ μ 곡λΆνλ€.
- μ κ·ννμμ μ΄λ―Έ μκ³ μλ κ°λ°μμκ²λ μ κ·ννμμ μλ°μ€ν¬λ¦½νΈμμλ μ΄λ»κ² μ¬μ©νλκ°λ₯Ό μλ €μ€λ€.
- μ κ·ννμ μ체μ λν νμ΅μ΄ νμνλ€λ©΄ μ κ·ννμ μμ μ 곡λΆνμ.
μ κ·ννμ μμ±
μ κ·ννμμ λκ°μ§ λ¨κ³λ‘ μ΄λ£¨μ΄μ§λ€.
νλλ μ»΄νμΌ(compile) λ€λ₯Έ νλλ μ€ν(execution)μ΄λ€. μ°μ μ»΄νμΌλΆν° μμ보μ.
μ»΄νμΌ
μ»΄νμΌμ κ²μΆνκ³ μ νλ ν¨ν΄μ λ§λλ μΌμ΄λ€.
μ°μ μ κ·ννμ κ°μ²΄λ₯Ό λ§λ€μ΄μΌ νλ€. κ°μ²΄λ₯Ό λ§λλ λ°©λ²μ λκ°μ§κ° μλ€.
aλΌλ ν μ€νΈλ₯Ό μ°Ύμλ΄λ μ κ·ννμμ λ§λ€μ΄λ³΄μ.
μ κ·ννμ 리ν°λ΄
<script>
var pattern = /a/
</script>
μ¬λμμ μ¬λμ μ¬μ΄ aκ° μ°λ¦¬κ° μ°Ύκ³ μ νλ λμμ΄λΌλ κ²μ μλ €μ£Όλ κ²μ΄λ€.
μ΄κ²μ patternμ΄λΌλ λ³μμ λ΄μμΌλ‘μ¨, μ°λ¦¬κ° μ°Ύκ³ μΆμ λ΄μ©μ μ°Ύμ μ μλ κ²μ΄λ€.
μ κ·ννμ κ°μ²΄ μμ±μ
<script>
var pattern = new RegExp('a');
</script>
newλ‘ μ κ·ννμ κ°μ²΄λ₯Ό λ§λ€μ΄ μ£Όλ κ²μ΄κ³ 'a'λΌλ λ¬Έμλ₯Ό μ°Ύλλ€λ κ²μ μλ €μ£Όλ κ²μ΄λ€.
λκ°μ§ λͺ¨λ κ°μ κ²°κ³Όλ₯Ό λ§λ€μ§λ§ κ°μκ° μ₯λ¨μ μ΄ μλ€.
μμ λ΄μ©μ μ κ·ννμμ μμ£Ό μμ μ‘°μ(μ¬μ©)λ²μ΄κΈ° λλ¬Έμ
μ€μ μμ λ€μ΄κ°λ λ΄μ©μ μ κ·ννμμ λ¬Έλ²μ λ§κ² μμ μ΄ νμν κ²μ μ°Ύμλ΄λ μ€μ΅μ ν΄λ³΄μ.
μ κ·ννμμ μ¬μ©νλ μ΄μ λ μΆμΆ, test, μΉν λ±μ μμ κ²μ΄λ€.
λ¨Όμ 첫λ²μ§Έ λ°©λ²μ μ΄ν΄λ³΄μ.
μ κ·ννμ λ©μλ μ€ν
μ κ·ννμμ μ»΄νμΌν΄μ κ°μ²΄λ₯Ό λ§λ€μλ€λ©΄ μ΄μ λ¬Έμμ΄μμ μνλ λ¬Έμλ₯Ό μ°Ύμλ΄μΌ νλ€.
RegExp.exec() (exec : μ€νμ μ½μ)
<script>
console.log(pattern.exec('abcdef')); // ["a"]
</script>
μ€νκ²°κ³Όλ λ¬Έμμ΄ aλ₯Ό κ°μΌλ‘ νλ λ°°μ΄μ 리ν΄νλ€.
execλ μ€νμ μλ―Ένλ€.
μ€λ₯Έμͺ½μ κ²½μ° . μ΄ μλ―Ένλ κ²μ μ΄λ ν λ¬Έμλ, 1κ°μ λ¬Έμλ₯Ό μλ―ΈνκΈ° λλ¬Έμ 2κ°κ° μΆλ ₯λλ€.
μλμ κ°μ΄ ν¨ν΄μ΄ μ‘΄μ¬νμ§ μλκ²½μ°!
<script>
console.log(pattern.exec('bcdefg')); // null
</script>
μΈμ 'bcdef'μλ aκ° μκΈ° λλ¬Έμ nullμ 리ν΄νλ€.
RegExp.test()
testλ μΈμ μμ ν¨ν΄μ ν΄λΉλλ λ¬Έμμ΄μ΄ μμΌλ©΄ true, μμΌλ©΄ falseλ₯Ό 리ν΄νλ€.
<script>
console.log(pattern.test('abcdef')); // true
console.log(pattern.test('bcdefg')); // false
</script>
μ¦ exec()λ₯Ό μ¬μ©νλ κ²μ λ³΄ν΅ μΆμΆμ κ²½μ°μ΄κ³ , testλ₯Ό μ¬μ©νλ κ²½μ°λ μ°λ¦¬κ° μ°Ύλ μ 보κ°
μλμ§ μλμ§ μ‘΄μ¬ μ 무λ₯Ό testνλ μ©λλ‘ μ¬μ©μ νλ κ²μ΄λ€.
κ° μ©λμ λ§κ² ν¨μλ₯Ό μ μ΄μ©νλ κ² λν μ€μνλ€.
λ¬Έμμ΄ λ©μλ μ€ν
λ¬Έμμ΄ κ°μ²΄μ λͺλͺ λ©μλλ μ κ·ννμμ μ¬μ©ν μ μλ€.
String.match()
RegExp.exec()μ λΉμ·νλ€. μ¦ ν¨ν΄μ μ°Ύμμ£Όκ³ μλ€λ©΄ μΆμΆ ν΄μ£Όλ κ²μ΄λ€.
<script>
console.log('abcdef'.match(pattern)); // ["a"]
console.log('bcdefg'.match(pattern)); // null
</script>
String.replace()
λ¬Έμμ΄μμ ν¨ν΄μ κ²μν΄μ μ΄λ₯Ό λ³κ²½ν νμ λ³κ²½λ κ°μ 리ν΄νλ€.
<script>
console.log('abcdef'.replace(pattern, 'A')); // Abcdef
</script>
μ΅μ
μ κ·ννμ ν¨ν΄μ λ§λ€ λ μ΅μ μ μ€μ ν μ μλ€. μ΅μ μ λ°λΌμ κ²μΆλλ λ°μ΄ν°κ° λ¬λΌμ§λ€.
i μ΅μ
iλ₯Ό λΆμ΄λ©΄ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μλλ€.
<script>
var xi = /a/;
console.log("Abcde".match(xi)); // null
var oi = /a/i;
console.log("Abcde".match(oi)); // ["A"];
</script>
g μ΅μ
gλ₯Ό λΆμ΄λ©΄ κ²μλ λͺ¨λ κ²°κ³Όλ₯Ό 리ν΄νλ€.
<script>
var xg = /a/;
console.log("abcdea".match(xg)); //νλ²λ§ aκ° μ°Ύμμ§λ€.
var og = /a/g;
console.log("abcdea".match(og)); // aμ κ°―μλ§νΌ μΆλ ₯λλ€.
</script>
κ°μ΄ μ¬μ©νλ€λ©΄, 무μΈκ°λ₯Ό μ°Ύμ λ λμλ¬Έμλ₯Ό ꡬλ³νμ§ μκ³ λ¬Έμμ΄λ΄μ λͺ¨λ κ°μ μ°ΎμλΈλ€λ λ»μ΄λ€.
μΊ‘μ²
κ΄νΈμμ ν¨ν΄μ λ§μΉ λ³μμ²λΌ μ¬μ¬μ©ν μ μλ€.
μ΄ λ κΈ°νΈ $λ₯Ό μ¬μ©νλλ° μλ μ½λλ codingκ³Ό everybodyμ μμλ₯Ό μμ μν¨λ€.
<script>
var pattern = /(\w+)\s(\w+)/;
var str = "coding everybody";
var result = str.replace(pattern, "$2, $1");
console.log(result);
</script>
wλ λ¬Έμλ₯Ό μλ―Ένλ©°, a-zA-Z0-9λ₯Ό μλ―Ένλ€.
+ λ μλμ : μμ μλ ν¨ν΄μ΄ 1κ° μ΄μμΈ κ²½μ° ν΄λΉνλ€.(ex: # = x(ν¨ν΄μ μλ κ²½μ°), a = ok)
s λ μ€νμ΄μ€ : κ³΅λ°±μ΄ μλ€λ©΄ μμ λΆλΆμ‘°κ±΄μ λ§μ‘±μν¨λ€.
μ¦, μμ μ½λμ μ€νκ²°κ³Όλ everybody, codingμΌλ‘ λμ¨λ€.
μ΄μ λ resultλΌλ λ³μμ strλ³μ λ΄μ©μ μ μ₯νμλλ°, μ΄λ₯Ό ν¨ν΄μΌλ‘ λλμ΄ μ μ₯νμκ³
$λ νΉμν μλ―Έλ₯Ό κ°μ§λλ°, $2λ₯Ό νλ©΄ λ¬Έμ₯ν¨ν΄μ€ λλ²μ§Έ κ΄νΈ(μ μ½λμμ '\w+'λ₯Ό μλ―Έ) λ₯Ό λ»νκ³ ,
replaceλ μΉνμ ν΄μ£Όλ ν¨μλ₯Ό μλ―Ένλ€.
λΆμν΄λ³΄λ©΄ pattern, " " μ¦ ν°λ°μ΄ν μμ λ€μ΄κ°λ λ΄μ©μ΄ strμ΄λΌλ λ¬Έμλ₯Ό μ΄λ»κ² μΉνν κ²μΈμ§λ₯Ό κΈ°μ¬νλ κ²μΈλ°,
μ΄ λΆλΆμ $2, $1κ³Ό κ°μ ννλ‘ μΉνμ νλ€κ³ νμμΌλ $2 μ¦ everybodyκ° μΆλ ₯λκ³ ,(μ½€λ§)λ₯Ό μ°κ² λ ν
λ§μ§λ§μΌλ‘ $1 μ¦ codingμ΄λΌλ λ¬Έμλ₯Ό μΆλ ₯νκ² ν΄μ£Όλ κ²μ΄λ€.
κ²°κ³Όμ μΌλ‘ everybody, codingμ΄ μΆλ ₯λλ€.
μμ κ°μ΄ μ κ·μμ μκ°ννμ¬ νμΈν΄λ³Ό μλ μλ€.
μλ μ£Όμλ₯Ό μ°Έκ³ ν΄μ μ κ·ννμμ μ€μ΅ν΄λ³΄μ!
lucete1230-cyberpolice.tistory.com/44
[ν¬λ μ] μ κ·ννμ
μ€λμ μ΄λμμλ μμ£Ό μ°μ΄λ "μ κ·ννμ"μ λν΄ μμλ³΄κ³ κ°λ¨ν μ€μ΅μ ν΄λ³Όκ»μ μ κ·ννμ νΉμ ν κ·μΉμ κ°μ§ λ¬Έμμ΄μ μ§ν©μ νννλλ° μ¬μ©νλ νμ μΈμ΄ κ°λ (κ°μ) ↓↓ κΈ°λ³Έ
lucete1230-cyberpolice.tistory.com
μ΄λ κ² μμ κ°μ΄ κ·Έλ£Ήμ μ§μ νκ³ , μ§μ λ κ·Έλ£Ήμ κ°μ Έμμ μ¬μ©νλ κΈ°λ₯(κ°λ )μ "μΊ‘μ²"λΌκ³ νλ€.
μΉν
μλ μ½λλ λ³Έλ¬Έ μ€μ URLμ λ§ν¬ html νκ·Έλ‘ κ΅μ²΄νλ€.
<script>
var urlPattern = /\b(?:https?):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*/gim;
var content = 'μνμ½λ© : http://opentutorials.org/course/1 μ
λλ€. λ€μ΄λ² : http://naver.com μ
λλ€. ';
var result = content.replace(urlPattern, function(url){
return '<a href="'+url+'">'+url+'</a>';
});
console.log(result);
</script>
κ²°κ³Όλ μλμ κ°λ€.
μ°Έκ³
'Languages > Java Script' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λΉμ μ΄ μ’μν λ§ν μ½ν μΈ
-
[Js] κ°μΌλ‘μμ ν¨μμ μ½λ°± | μ½λ°± | λΉλκΈ° μ²λ¦¬ 2021.02.04
-
[Js] ν¨μμ§ν₯ | javascript ν¨μ | μ ν¨λ²μ | μ§μλ³μ μ μλ³μ 2021.02.04
-
[Js] UIμ API κ·Έλ¦¬κ³ λ¬Έμ보λ λ² | APIλ? | javascript API 2021.02.04
-
[Js] λͺ¨λ | λͺ¨λμ μ¬μ© | Node.jsμμμ λͺ¨λμ λ‘λ | javascript λͺ¨λ | λΌμ΄λΈλ¬λ¦¬ 2021.02.04
μμ€ν κ³΅κ° κ°μ¬ν©λλ€