블로그 이미지

Rurony's Training Gym

Rurony의 트레이닝 도장! by Rurony


정규 표현식 (Regular Expression)


정규 표현식(Regular Expression)

자바스크립트의  정규 표현식은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용.

 

사용하는 메소드

regexp.exec, regexp.test, string.match, string.replace, string.search, string.split 등

 

정규표현식 객체 생성

    정규 표현식 리터럴 사용

        var my_regexp = /"(?:\\.|[^\\\"])*"/g;

   

        정규 표현식 플래그

        g  : Global(여러번 일치함, 정확한 의미는 메소드에 따라 다름)
        i  : Insensitive (대소문자를 구분하지 않음)
        m  : Multiline(^과 $이 라인 끝 문자에 일치할 수 있음)

 

    RegExp 생성자 사용

        var my_regexp = new RegExp("\"(?:\\.|[^\\\\\\\"])*\"", 'g');

       

        RegExp 객체의 속성
        global  : g 플래그가 사용된 경우 true
        ignoreCase : i 플래그가 사용된 경우 true
        lastIndex : 다음 exec 실행을 위한 시작점을 나타냄. 초기값을 0
        multiline  : m 플래그가 사용된 경우 true
        source  : 정규 표현식의 소스 텍스트

 

구성 요소

^ : 문자열의 시작
$ : 문자열의 끝

 

수량자
{m, n} : m에서 n번 반복
? : 0 또는 한번 반복 {0,1}
* : 0번 이상 반복 {0,}
+ : 한번 이상 반복 {1,}

 

클래스
[-] : 범위 ex) [a-z]
[^] : 부정(제외) ex) [^?#] : '?', '#'를 제외한 모든 문자

이스케이프 (\)
\d : 숫자문자 [0-9]와 동일
\D : 숫자문자 아님 [^0-9]와 동일
\s : 공백문자
\S : 공백문자 아님

...

 

선택

| : ex) "into".match(/in|int)

 

그룹

\1,\2,... 의 표현으로 그룹에 대한 참조가능

캡처 : '()'로 묶인 정규 표현식 선택

비캡처 : '(?:)'

긍정형 룩어헤드 : '(?=)' [좋은점 아님]

부정형 룩어헤드 : '(?!)' [좋은점 아님]

 

사용 예제

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, '');
}
var strTest = '   abcd     efgh   ';
document.writeln(strTest.trim());  //abcd     efgh

 

var isEmail = function (str) {
    var emailEx1 = /[A-Za-z0-9_\-]@[A-Za-z0-9_\-]+\.[A-Za-z]+/;
    var emailEx2 = /[A-Za-z0-9_\-]@[A-Za-z0-9_\-]+\.[A-Za-z0-9_\-]+\.[A-Za-z]+/;
    var emailEx3 = /[A-Za-z0-9_\-]@[A-Za-z0-9_\-]+\.[A-Za-z0-9_\-]+\.[A-Za-z0-9_\-]+\.[A-Za-z]+/;
 
    if (emailEx1.test(str)) { return true; }
    if (emailEx2.test(str)) { return true; }
    if (emailEx3.test(str)) { return true; }
 
    return false;
}

 

Top