JavaScript & Node js
[JavaScript] 정규표현식 (Regular Expression)
피곤핑
2020. 7. 7. 00:04
정규표현식이란?
특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식!
자바스크립트의 경우 내장되어있으므로 편하게 사용할 수 있음
패턴 만들기
var pattern = /a/;
var pattern = new RegExp('a');
RegExp 객체의 사용
- exec()
예를 들어서 url 과 같은 정보를 추출하고 싶을 때, test 하고 싶을 때, 필요한 정보를 치환하고 싶을 때 사용
console.log(pattern.exec('abcdef')); //["a"]
/a./ 의 경우 a를 포함하여 한문자까지 나타낸다고 볼 수 있음!
var pattern = /a./;
console.log(pattern.exec('abcde')); // ["ab"]
- test() : 우리가 찾는 정보가 있는지 없는지 테스트
pattern.test('abcde'); // true
pattern.test('bcdef'); // false
string
- match() : RegExp.exec() 와 비슷함
var pattenr = /a/;
var str = 'abcdef';
str.match(pattern); // ["a"], 없을 땐 null
- replace() : 패턴에 해당되는 문자를 바꿔줌
str.replace(pattern, 'A')); // Abcdef
옵션
- i : i 를 붙이면 대소문자를 구분하지 않음.
- g : g 를 붙이면 검색된 모든 결과를 리턴함.
캡처
괄호안의 패턴은 마치 변수처럼 재사용할 수 있음. 이 때 기호 $를 사용하는데 아래 코드는 everybody 와 coding 의 순서를 역전시킴.
var pattern = /(\w+)\s(\w+)/;
https://regexper.com/#%28%5Cw%2B%29%5Cs%28%5Cw%2B%29
Regexper
regexper.com
- \w : A-Z, a-z, 0-9
- + : 수량자, 앞에 있는 문자가 하나 이상인 경우에 이 패턴이 유효해짐
- \s : 공백 문자열
var str = "coding everybody";
var result = str.replace(pattern, "$2, $1");
console.log(result); // everybody, coding
어떻게 중간에 콤마가..?
- $2 : 패턴에서 두번째그룹 (두번째 괄호안)을 뜻함.
- "$2, $1" : 이 문자열 그대로 나온것임 두번째 괄호가 먼저나오고 콤바를 찍고 첫번째 괄호 문자열
치환
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);
(함수관련부분은 함수와 콜백부분에서!!)