-
정규표현식(regular expression)concept/javascript 2020. 3. 27. 00:11
정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴 (MDN)
문자열에서 특정한 문자를 찾아내는 도구. 이 도구를 이용하면 수십줄이 필요한 작업을 한 줄로 끝낼 수 있다. (생활코딩)
컴파일
: 실행을 하기 위한 패턴을 만든다.
패턴을 만드는 방법 2가지
1. 정규표현식 리터럴
var pattern = /a/;
2. 정규표현식 객체생성자
var pattern = new RegExp('a');
두 가지 모두 같은 결과를 만들지만 각자의 장단점이 있다.
실행
: 찾은 패턴에 대해서 어떠한 작업을 구체적으로 하는 것
1.RegExp.exec()
::: 기본예제 :::
//a를 정규표현식으로 지정하고, var pattern = /a/; //abcde에서 정규표현식을 찾아라. pattern.exec('abcde'); // -->['a']
::: . 의 기능 :::
//a.으로 정규표현식을 지정하면? var pattern = /a./; //여기서 .은 어떤 것이든 상관없이 하나의 문자를 말한다. 그러므로 a와 그 뒤에 따라오는 문자를 함께 반환한다. pattern.exec('abcde'); // --> ['ab']
::: 찾으려는 문자열 안에 정규표현식이 없을 경우? :::
//a으로 정규표현식을 지정하고 var pattern = /a/; //'bcde'안에서 정규표현식이 없는 경우 null을 반환한다. pattern.exec('bcde'); // --> null
2.RegExp.test()
test는 인자 안에 패턴에 해당되는 문자열이 있으면 true, 없으면 false를 리턴한다.
var pattern = /a/; pattern.test('abcde'); //--> true; pattern.test('bcdef'); //--> false;
문자열 메소드 실행
문자열 객체의 몇몇 메소드는 정규표현식을 사용할 수 있다.
String.match ()
문자열이 정규식과 매치되는 부분을 검색한다.
var pattern = /a/; var firstStr = 'abcde'; var secondStr = 'bcdef'; firstStr.match(pattern); //--> ['a'] secondStr.match(pattern); //--> null
String.replace()
문자열에서 패턴을 검색해서 이를 변경한 후에 변경된 값을 리턴한다.
var pattern = /a/; 'abcde'.replace(pattern, 'A') //--> Abcde
옵션
정규표현식 패턴을 만들 때, 옵션을 설정할 수 있다. 옵션에 따라서 검출되는 데이터가 달라진다.
i
i를 붙이면 대소문자를 구분하지 않는다.
var xi = /a/; 'Abcde'.match(xi) //--> null var oi = /a/i; 'Abcde'.match(oi) //--> ['A']
g
g를 붙이면 검색된 모든 결과를 리턴한다.
var xg = /a/; 'abcdea'.match(xg); //-->['a'] var og = /a/g; 'abcdea'.match(og); //-->['a', 'a']
캡쳐
괄호 안의 패턴은 마치 변수처럼 재사용할 수 있다. 이 때 기호 $를 사용하는데 아래 코드는 첫번째 문자와 두번째 문자의 순서를 역전시킨다.
var pattern = /(\w+)\s(\w+)/; var str = 'coding everybody'; var result = str.replace(pattern, '$2, $1'); //--> everybody, coding
치환
아래 코드는 본문 중의 URL을 링크 html 태그로 교체한다.
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);
결과는 아래와 같다.
생활코딩 : <a href="http://opentutorials.org/course/1">http://opentutorials.org/course/1</a> 입니다. 네이버 : <a href="http://naver.com">http://naver.com</a> 입니다.
출처 : 생활코딩
'concept > javascript' 카테고리의 다른 글
reduce() (0) 2020.03.28 Mutable vs Immutable (0) 2020.03.27 문자열 메소드 (string method) (0) 2020.03.26 객체 (Object) (0) 2020.03.26 함수와 메소드의 차이(Difference between function and method) (0) 2020.03.25