-
[생활코딩] JavaScript 정규표현식Study/JavaScript 2019. 12. 9. 19:48반응형
정규표현식 (regular expression)
정규표현식(regular expression)은 문자열에서 특정한 문자를 찾아내는 도구다.
정규표현식은 두가지 단계로 이루어진다. 하나는 컴파일(compile) 다른 하나는 실행(execution)이다.
- 컴파일 compile
컴파일은 검출하고자 하는 패턴을 만드는 일이다. 우선 정규표현식 객체를 만들어야 한다.객체를 만드는 방법은 두가지가 있다.
정규표현식 리터럴 :var pattern = /a/
정규표현식 객체 생성자 :var pattern = new RegExp('a');
- 실행 execution
object.exec( )RegExp.exec() console.log(pattern.exec('abcdef')); // ["a"]
: 실행결과는 문자열 a를 값으로 하는 배열을 리턴한다.
console.log(pattern.exec('bcdefg')); // null
: 인자 'bcdef'에는 a가 없기 때문에 null을 리턴한다.
object.test( )
RegExp.test() console.log(pattern.test('abcdef')); // true cnosole.log(pattern.test('bcdefg')); // false
: test는 인자 안에 패턴에 해당되는 문자열이 있으면 true, 없으면 false를 리턴한다.
문자열 객체의 몇몇 메소드는 정규표현식을 사용할 수 있다.String.match( )
console.log('abcdef'.match(pattern)); // ["a"] console.log('bcdefg'.match(pattern)); // null
: 실행결과는 문자열 a를 값으로 하는 배열을 리턴한다.
String.replace()console.log('abcdef'.replace(pattern, 'A')); // Abcdef
: 문자열에서 패턴을 검색해서 이를 변경한 후에 변경된 값을 리턴한다.
- 옵션
정규표현식 패턴을 만들 때 옵션을 설정할 수 있다. 옵션에 따라서 검출되는 데이터가 달라진다.
i
: i를 붙이면 대소문자를 구분하지 않는다.var xi = /a/; console.log("Abcde".match(xi)); // null var oi = /a/i; console.log("Abcde".match(oi)); // ["A"];
g
: g를 붙이면 검색된 모든 결과를 리턴한다.var xg = /a/; console.log("abcdea".match(xg)); // ["a"] var og = /a/g; console.log("abcdea".match(og)); // ["a", "a"]
- 캡처
괄호안의 패턴은 마치 변수처럼 재사용할 수 있다. 이 때 기호 $를 사용하는데아래 코드는 coding과 everybody의 순서를 역전시킨다.
var pattern = /(\w+)\s(\w+)/; var str = "coding everybody"; var result = str.replace(pattern, "$2 $1"); console.log(result); // "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 ''+url+''; }); console.log(result); // "생활코딩 : http://opentutorials.org/course/1 입니다. 네이버 : http://naver.com 입니다. " // 주소 문자열에 하이퍼링크가 걸리게 된다.
"생활코딩 : http://opentutorials.org/course/1 입니다. 네이버 : http://naver.com 입니다. "
반응형'Study > JavaScript' 카테고리의 다른 글
자바스크립트 비동기 처리 Promise (0) 2020.02.09 자바스크립트 비동기 처리 다루기 (Asynchronous call) (0) 2020.02.08 [생활코딩] JavaScript 데이터 타입 (0) 2019.12.09 [생활코딩] JavaScript 객체지향 : 상속, Prototype, Object (0) 2019.12.08 [생활코딩] JavaScript 객체지향 : this (0) 2019.12.08