JS 정규표현식
정규표현식:
문자열을 처리하는 방법
특정한 조건의 문자를 검색하거나 치환하는 과정을간편하게 처리 할 수 있도록 하는 수단
정규표현식에서 패턴을 만드는 두가지 방법
1. 정규표현식 리터럴
let pattern = /'a'/
a는 찾고자하는 문자
2. 정규표현식 객체 생성자
let pattern = new RegExp('a');
a는 찾고자하는 문자
->두 방법 모두 찾고자하는 정보를 pattern이라는 변수에 저장
정규표현식을 통해서 할 수 있는 3가지
1. 패턴에 맞는 정보 추출
Ex) 문자열에서 URL 추출해내
RegExp.exec()
let pattern = /'a'/;
- console.log(pattern.exec('abcdef')); // ["a"]
->문자열 a를 값으로 하는 배열을 리턴
- console.log(pattern.exec('bcdefg')); // null
->인자 'bcdef'에는 a가 없기 때문에 null을 리턴한다.
2. TEST
Ex) 문자열에서 a가 존재하는지 아닌지 test
RegExp.test()
let pattern = /'a'/;
- console.log(pattern.test('abcdef')); // true
- cnosole.log(pattern.test('bcdefg')); // false
3. 찾은 정보를 치환
문자열(String) 객체의 정규 표현식
1. String.match()
let pattern = /'a'/;
- let str = 'abcdef';
str.match(pattern); // ["a"]
- let str = 'bcdef';
str.match(pattern);
null
2. String.replace()
let pattern = /'a'/;
let str = 'abcdef';
str.replace(pattern, 'A');
-> pattern의 a를 str에서 찾아서 A로 바꿔라
console.log('abcdef'.replace(pattern, 'A')); // Abcdef
정규 표현식의 옵션
i
i를 붙이면 대소문자를 구분하지 않음
let xi = /a/;
console.log("Abcde".match(xi)); // null
let oi = /a/i;
console.log("Abcde".match(oi)); // ["A"];
g
g를 붙이면 검색된 모든 결과를 리턴한다.
let xg = /a/;
console.log("abcdea".match(xg)); // ["a"] -> a가 두개인데 한개만 출력하고 있음
let og = /a/g;
console.log("abcdea".match(og)); // ["a", "a"]
let ig = /a/ig; -> i,g 한번에 섞어서 사용도 가능!
캡쳐
let pattern = /(\w+)\s(\w+)/; 패턴정리 괄호안의 패턴은 마치 변수처럼 재사용할 수 있다
let str = "coding everybody";
let result = str.replace(pattern, "$2, $1");
패턴의 2번째 그룹을 앞으로 보내고 1번째 그룹을 뒤로 공백은 ,로 변경
console.log(result); // everybody, coding
치환
let urlPattern = /\b(?:https?):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*/gim;
let content = '네이버 : http://naver.com 입니다. ';
->여기서 url을 link로 바꿔주기!
let result = content.replace(urlPattern, function(url){
return '<a href="'+url+'">'+url+'</a>';
});
console.log(result);