플래그 및 속성

Flash Player 9 이상, Adobe AIR 1.0 이상

다음 표에서는 일반 표현식에 설정할 수 있는 다섯 개의 플래그에 대해 설명합니다. 각 플래그는 일반 표현식 객체의 속성으로 액세스할 수 있습니다.

플래그

속성

설명

g

global

둘 이상의 일치 항목을 찾습니다.

i

ignoreCase

일치하는 항목을 찾을 때 대/소문자를 구분하지 않습니다. 또한 A - Z a - z 문자에는 적용되지만 É é 와 같은 확장 문자에는 적용되지 않습니다.

m

multiline

이 플래그가 설정되어 있는 경우 $ ^ 은 각각 행의 시작 부분과 끝 부분을 찾을 수 있습니다.

s

dotall

이 플래그가 설정되어 있는 경우 . (도트)는 개행 문자( \n )를 찾을 수 있습니다.

x

extended

확장 일반 표현식을 사용할 수 있습니다. 패턴의 일부로 무시되는 공백을 일반 표현식에 입력할 수 있으며 이를 통해 일반 표현식 코드를 읽기 쉽게 입력할 수 있습니다.

이러한 속성은 읽기 전용이며 다음과 같이 일반 표현식 변수를 설정할 때 플래그( g , i , m , s , x )를 설정할 수 있습니다.

var re:RegExp = /abc/gimsx;

하지만 명명된 속성을 직접 설정할 수는 없습니다. 예를 들어, 다음 코드를 실행하면 오류가 발생합니다.

var re:RegExp = /abc/; 
re.global = true; // This generates an error.

기본적으로 일반 표현식 선언에 플래그를 지정하지 않으면 해당 플래그가 설정되지 않으며 해당 속성이 false 로 설정됩니다.

또한 다음과 같이 일반 표현식의 다른 두 속성도 사용할 수 있습니다.

  • lastIndex 속성은 일반 표현식의 exec() 또는 test() 메서드를 다음에 호출할 때 사용하기 위해 문자열의 인덱스 위치를 지정합니다.

  • source 속성은 일반 표현식의 패턴 부분을 정의하는 문자열을 지정합니다.

g(global) 플래그

g ( global ) 플래그가 포함되지 않은 일반 표현식은 일치 항목을 하나만 찾습니다. 예를 들어, g 플래그가 일반 표현식에 포함되어 있지 않은 경우 String.match() 메서드는 일치하는 하위 문자열을 하나만 반환합니다.

var str:String = "she sells seashells by the seashore."; 
var pattern:RegExp = /sh\w*/; 
trace(str.match(pattern)) // output: she

g 플래그가 설정되면 Sting.match() 메서드는 다음과 같이 일치 항목을 여러 개 반환합니다.

var str:String = "she sells seashells by the seashore."; 
var pattern:RegExp = /sh\w*/g; 
// The same pattern, but this time the g flag IS set. 
trace(str.match(pattern)); // output: she,shells,shore

i(ignoreCase) 플래그

기본적으로 일반 표현식으로 일치 항목을 찾을 때는 대/소문자를 구분합니다. 그러나 i ( ignoreCase ) 플래그를 설정하면 대/소문자 구분 특성이 무시됩니다. 예를 들어, 일반 표현식에 소문자 s 를 포함하면 문자열의 첫 번째 문자인 대문자 S 를 찾을 수 없습니다.

var str:String = "She sells seashells by the seashore."; 
trace(str.search(/sh/)); // output: 13 -- Not the first character

그러나 i 플래그를 설정하면 일반 표현식에서 대문자 S 를 찾습니다.

var str:String = "She sells seashells by the seashore."; 
trace(str.search(/sh/i)); // output: 0

i 플래그는 A - Z a - z 문자에 대해서만 대/소문자 구분 특성을 무시하고 É é 같은 확장 문자에는 적용되지 않습니다.

m(multiline) 플래그

m ( multiline ) 플래그가 설정되어 있지 않은 경우 ^ 은 문자열의 시작 부분을 찾고 $ 는 문자열의 끝 부분을 찾습니다. m 플래그가 설정되어 있는 경우 이러한 문자는 각각 행의 시작 부분과 끝 부분을 찾습니다. 개행 문자가 포함된 다음 문자열을 검토하십시오.

var str:String = "Test\n"; 
str += "Multiline"; 
trace(str.match(/^\w*/g)); // Match a word at the beginning of the string.

일반 표현식에 g ( global ) 플래그가 설정되어 있더라도 문자열의 시작 지점인 ^ 에 대해서는 일치 항목이 하나뿐이므로 match() 메서드는 하위 문자열을 하나만 찾습니다. 따라서 출력 결과는 다음과 같습니다.

Test

다음은 같은 코드에 m 플래그를 설정한 경우입니다.

var str:String = "Test\n"; 
str += "Multiline"; 
trace(str.match(/^\w*/gm)); // Match a word at the beginning of lines. 

그러면 두 행의 시작 부분에 있는 단어가 모두 출력에 포함됩니다.

Test,Multiline

행의 끝을 나타내는 문자는 \n 뿐이며 다음 문자로는 행의 끝을 나타낼 수 없습니다.

  • 캐리지 리턴( \r ) 문자

  • 유니코드 행 분리 기호( \u2028 ) 문자

  • 유니코드 단락 분리 기호( \u2029 ) 문자

s(dotall) 플래그

s ( dotall 또는 "dot all") 플래그가 설정되어 있지 않은 경우 일반 표현식 패턴에 도트( . )를 포함해도 개행 문자( \n )를 찾을 수 없습니다. 다음 예제의 경우 일치하는 항목이 없습니다.

var str:String = "<p>Test\n"; 
str += "Multiline</p>"; 
var re:RegExp = /<p>.*?<\/p>/; 
trace(str.match(re)); 

하지만 s 플래그를 설정하면 개행 문자를 찾을 수 있습니다.

var str:String = "<p>Test\n"; 
str += "Multiline</p>"; 
var re:RegExp = /<p>.*?<\/p>/s; 
trace(str.match(re)); 

이 경우 개행 문자를 포함하여 <p> 태그 내에 있는 전체 하위 문자열이 검색됩니다.

<p>Test 
Multiline</p>

x(extended) 플래그

메타심볼이나 메타시퀀스가 많이 포함된 일반 표현식은 쉽게 읽을 수 없습니다. 예를 들면 다음과 같습니다.

/<p(>|(\s*[^>]*>)).*?<\/p>/gi

일반 표현식에 x ( extended ) 플래그를 사용하면 일반 표현식 패턴에 입력하는 공백이 무시됩니다. 예를 들어, 다음 일반 표현식은 위의 예제에 나오는 일반 표현식과 동일합니다.

/     <p    (>  | (\s* [^>]* >))    .*?    <\/p>  /gix

x 플래그를 설정한 경우 공백 문자를 찾지 않으려면 공백 앞에 백슬래시를 추가하십시오. 예를 들어, 다음 두 일반 표현식은 동일합니다.

/foo bar/ 
/foo \ bar/x

lastIndex 속성

lastIndex 속성은 문자열에서 다음 검색을 시작할 인덱스 위치를 지정합니다. 이 속성은 g 플래그가 true 로 설정된 일반 표현식에서 호출되는 exec() test() 메서드에 영향을 줍니다. 예를 들어 다음과 같은 코드를 살펴봅니다.

var pattern:RegExp = /p\w*/gi; 
var str:String = "Pedro Piper picked a peck of pickled peppers."; 
trace(pattern.lastIndex); 
var result:Object = pattern.exec(str); 
while (result != null) 
{ 
    trace(pattern.lastIndex); 
    result = pattern.exec(str); 
}

lastIndex 속성은 기본적으로 0으로 설정되는데, 이렇게 하면 문자열의 맨 앞에서 검색을 시작합니다. 각 일치 항목을 찾은 후에는 이 속성이 해당 항목 다음의 인덱스 위치로 설정됩니다. 따라서 위의 코드를 실행하면 다음과 같이 출력됩니다.

0 
5 
11 
18 
25 
36 
44

global 플래그가 false 로 설정되어 있는 경우 exec() test() 메서드는 lastIndex 속성을 사용하거나 설정하지 않습니다.

String 클래스의 match() , replace() search() 메서드는 해당 메서드를 호출할 때 사용된 일반 표현식의 lastIndex 속성 설정에 관계없이 문자열의 맨 앞에서 모든 검색을 시작합니다. 그러나 match() 메서드는 lastIndex 속성을 0으로 설정합니다.

lastIndex 속성을 설정하여 문자열에서 일반 표현식으로 일치 항목을 검색할 시작 위치를 조정할 수 있습니다.

source 속성

source 속성은 일반 표현식의 패턴 부분을 정의하는 문자열을 지정합니다. 예를 들면 다음과 같습니다.

var pattern:RegExp = /foo/gi; 
trace(pattern.source); // foo