생활코딩의 정규표현식 강의를 보면서 작성.
코딩테스트 문제를 풀 때 정규표현식을 이용하면 간단히 풀 수 있는 문제들을 종종 만나서 간단하게 배우고 넘어가야겠다.
: 문자열에서 특정한 문자를 찾아내는 도구.
이 도구를 이용하면 수십 줄의 코드 -> 한 줄로 끝낼 수 있다.
정규표현식은 하나의 언어라고 할 수 있음.
정규표현식을 이용하여 추출, 테스트(확인하고자 하는 정보가 있는지 없는지), 치환 등의 작업을 한다.
컴파일은 검출하고자 하는 패턴을 만드는 일이다.
정규표현식 리터럴
var pattern = /a/;
정규표현식 객체 생성자
var pattern = new RegExp('a');
이러한 과정은 우리가 찾고자 하는 정보를 패턴화 하여 변수에 저장하는 과정.
RegExp.exec()
console.log(pattern.exec('abcdef'));
//['a']
문자 안에 a가 포함이 되어 있지 않다면 null값 반환
var pattern = /a./;
console.log(pattern.exec('abcdef'));
//['ab']
pattern 변수를 /a./으로 바꾸면 ['ab']가 반환된다.
위에서 "."은 하나의 문자라는 의미이다. "."이 어떠한 문자이건 상관없이 반드시 앞에 a가 있는 문자를 추출하는 것
RegExp.test()
console.log(pattern.test('abcdef'));
//true
console.log(pattern.test('bcdef'));
//false
해당 문자가 있나 없나 테스트하여 불린 값을 반환한다. 있으면 true, 없으면 false
정규표현식을 사용할 수 있는 문자열 객체 메서드
String.match()
RegExp()와 비슷
console.log('abcdef'.match(pattern)); //['a']
console.log('bcdefg'.match(pattern)); //null
String.replace()
var str = 'abcdef';
str.replace(pattern,'A');
//"Abcdef"
i : i를 붙이면 대소문자를 구별하지 않음
g : g를 붙이면 모든 결과를 리턴 (이전에 replace를 이용해 모든 문자를 한 번에 변경하고 싶을 때 사용했던 기억이 있다.)
두 개를 /a/ig처럼 같이 사용할 수도 있다.
괄호 안의 패턴은 마치 변수처럼 재사용 가능. $기호를 사용
(\w+)\s(\w+)
:괄호는 그룹을 의미,
:\w는 문자를 의미(A~Z, a~z,0~9를 모두 담고 있음)
:+는 수량자(하나 이상이라는 표시)
:\s는 공백이란 의미(white_space)
var pattern = (\w+)\s(\w+)
var str = 'coding everybady';
var result = str.replace(pattern, '$2, $1');
console.log(result);
//everybody, coding
($n ->n번째 그룹을 의미)
coding -> 첫 번째 (\w+), $1가 된다
coding과 everybody 사이에 있는 공백 -> \s
everybody -> 두 번째 (\w+), $2가 된다
var urlPattern = /\b(?:https?):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*/gim;
var content = '공부기록 : https://practice-c0ding.tistory.com/ 입니다.';
var result = content.replace(urlPattern, function(url){
return '<a href="'+url+'">'+url+'</a>';
});
console.log(result);
//공부기록 : <a href="https://practice-c0ding.tistory.com/">https://practice-c0ding.tistory.com/</a>입니다.
| [자바스크립트/javascript] 데이터타입, data types, hoisting (0) | 2023.02.14 |
|---|---|
| [자바스크립트/javascript] async 와 defer의 차이점과 'use strict' (0) | 2023.02.12 |
| [자바스크립트/javascript] slice() / splice() (0) | 2023.01.24 |
| [자바스크립트/javascript] 이진수 관련 함수 (0) | 2023.01.24 |
| [자바스크립트/javascript] 화살표 함수 (0) | 2023.01.18 |