티스토리 뷰

IT

정규표현식(정규식) - javascript

엿장구이 2018. 3. 4. 20:50

정규표현식(정규식)은 영어로 regular expression 간단히 regex 또는 regexp.

특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어다.


정규표현식을 사용하기 전 용어들 부터 알아보자.


정규표현식에서 사용되는 기호를 meta 문자라고 표현하는데, 표현식에서 내부적으로 특정 의미를 가지는 문자를 말한다.






간단한 예시로 특수 문자를 이용해 정규표현식 패턴을 만들어 보자.

var pattern = \ab*c\;

또는 정규표현식 객체를 사용해서 생성도 가능하다.

var pattern = new RegExp("ab*c");


지금 생성한 패턴은 a 다음 b 가 0번 이상 반복되고(*) 그 뒤에 c 가 붙는 패턴을 의미한다.

"abeaabbbcd" 이 문자열에서 "abbbc"가 패턴과 일치한다.



이렇게 정규표현식으로 만든 패턴을 활용하는 method도 알아보자.


 exec

문자열에서 일치를 위해 검색을 실행하는 RegExp 메소드.

이는 정보를 배열로 반환한다. 일치하지 않으면 null을 반환한다.

 test

문자열에서 일치를 위해 테스트하는 RegExp 메소드. 이는 true 또는 false를 반환한다. 

 match

문자열에서 일치를 위해 검색을 실행하는 String 메소드.

이는 정보를 배열로 반환하거나 일치가 없으면 null을 반환한다. 

 search

문자열에서 일치를 위해 테스트하는 String 메소드.

일치의 색인, 또는 검색 실패시 -1을 반환한다. 

 replace

문자열에서 일치를 위해 검색을 실행하여 일치된 substring을 대체 substring으로 바꾸는 String 메소드. 

 split

정규 표현식 또는 지정된(fixed) 문자열을 사용하여 문자열을 substring들의 배열로 깨뜨리는 String 메소드. 



한 패턴이 어떤 문자열에서 나온 것인지 알고 싶으면, testsearch 메소드를 사용하자.

만약 더 많은 정보를 원하면(대신 실행이 느림) execmatch 메소드를 사용하자.


exec 메소드를 사용해보자.

var pattern = /d(b*)d/g;
var array = patter.exec("cdbbdbsbz");
console.log(patter.lastIndex); //5

이 스크립트에서 매칭이 성공하고 배열을 반환한 뒤 메소드에 맞게 속성을 갱신한다.


정규식 실행결과 메소드

 Object

Property or index 

Description 

 pattern

 

 일치된 문자열과 기억된 모든 substring들

 index

 input 문자열에서의 일치의 색인으로 0 부터 시작한다

 input

 원래의 문자열

 [0]

 최후로 일치된 문자들

 array

 lastIndex

 다음 일치가 시작하는 색인(g 플래그를 사용해야만 설정 가능)

 source

 패턴의 텍스트

 RegExp

 lastMatch

 최후로 일치된 문자들

 leftContext

 가장 최근 일치에 선행하는 substring

 rightContext

 가장 최근 일치를 뒤따르는 substring



바로 위 코드 var patten = /d(b*)d/g; 에서 g 그리고 표에 있는 g 플래그가 같은 의미인데 마지막으로 플래그 까지 알아보자.


플래그(flag)란 특정 동작을 수행할지 가리키는 1비트 이하의 정보로서 정규표현식에서도 플래그가 사용된다.


Regular expression flags

flag 

Description 

 g

Global을 의미하며 대상 문자열내에 모든 패턴을 검색하는 것을 의미한다.

 i

 case-insensitive. 대/소문자를 구분하지 않고 검색하는 것을 의미한다.

 m

 다중행(multi-line) 검색. 



플래그를 사용하는 방법은 두가지가 있다.

var regexp1 = /pattern/flags;
var regexp2 = new RegExp("pattern", "flags");






참고 페이지


정규표현식 - 위키백과 : https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D

정규식 - JavaScript : https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/%EC%A0%95%EA%B7%9C%EC%8B%9D

정규표현식(Regex) 정리 : http://hamait.tistory.com/342

자바스크립트 정규 표현식 : http://yaku.tistory.com/75

댓글
최근에 올라온 글
TAG
more