m 옵션은 조금 특이합니다. 우선 예제를 볼까요?

<script>
var s = '123abc\n456abc';
var res = s.match(/b/g);

document.write(res);
</script>

지난회의 마지막 예제를 조금 수정했습니다. 문자열 s에서 중간에 \n만 넣었습니다. 이렇게 되면 s는 두 줄이 됩니다. 그런데 결과를 보면 여전히 ‘b,b’입니다. 검색할 대상이 몇 줄에 걸쳐져 있더라도 다 찾아내는 걸 알 수 있습니다. 그렇다면 m 옵션은 왜 필요한 걸까요? 지난회에서는 m 옵션을 붙일 경우 여러 줄에 걸쳐져 있는 문자나 문자열을 검색해낸다고 단순히 설명드렸는데 실은 각 줄의 시작 부분에 대해서만 의미가 있습니다.

6회와 7회 강좌에서 캐럿(^)에 대한 설명을 드렸습니다. ‘그런 것도 있었나?’ 하시는 분들... 분명 계시겠지요. 해서 간단히 리마인드를 시켜드리면, 문자열의 처음 부분에 대해서만 검색하는 메타문자입니다. 역시 예제죠?

<script>
var s = '123abc\n456abc';
var res = s.match(/456/);

document.write(res);
</script>

위의 예제를 실행하면 ‘456’이 리턴됩니다. 즉 제대로 찾았습니다. 그런데

<script>
var s = '123abc\n456abc';
var res = s.match(/^456/);

document.write(res);
</script>

위의 예제에서는 null이 리턴됩니다. 변수 s에 들어 있는 문자열이 456이 시작하지 않기 때문입니다. 이번에는

<script>
var s = '123abc\n456abc';
var res = s.match(/^456/m);

document.write(res);
</script>

m 옵션을 붙였습니다. 그러자 ‘456’이 리턴됩니다. 정리하면, m 옵션이 없을 때는 여러 줄이건 아니건 주어진 텍스트의 첫 부분과만 매치돼야 합니다. m 옵션이 있으면 첫 줄이건 다른 줄이건 각 줄의 첫 부분과만 매치되면 됩니다.
List of Articles
번호 제목 글쓴이 날짜 조회 수
29 정규표현식 029. 자바스크립트의 정규식 5 마라톤맨 2012-03-28 15492
» 정규표현식 028. 자바스크립트의 정규식 4 마라톤맨 2012-03-09 9131
27 정규표현식 027. 자바스크립트의 정규식 3 마라톤맨 2012-03-02 9324
26 정규표현식 026. 자바스크립트의 정규식 2 마라톤맨 2012-02-27 11045
25 정규표현식 025. 자바스크립트의 정규식 1 마라톤맨 2012-02-22 31646
24 정규표현식 024. 숙제와 답 마라톤맨 2012-02-17 10069
23 정규표현식 023. 정규식의 옵션과 여러 정규식 엔진들 마라톤맨 2012-02-15 68183
22 정규표현식 022. 드라이브명과 디렉토리, 파일명 분리 2 마라톤맨 2012-02-13 23612
21 정규표현식 021. 드라이브명과 디렉토리, 파일명 분리 1 마라톤맨 2012-02-08 13535
20 정규표현식 020. IP 주소 유효성 검사 2 마라톤맨 2012-02-06 10755
19 정규표현식 019. IP 주소 유효성 검사 1 마라톤맨 2012-02-02 98018
18 정규표현식 018. 하위 표현식 3 마라톤맨 2012-01-30 10005
17 정규표현식 017. 하위 표현식 2 마라톤맨 2012-01-27 8335
16 정규표현식 016. 하위 표현식 1 마라톤맨 2012-01-25 10209
15 정규표현식 015. 최대 매치와 최소 매치 2 마라톤맨 2012-01-20 9098
14 정규표현식 014. 최대 매치와 최소 매치 1 마라톤맨 2012-01-18 12519
13 정규표현식 013. 검색할 위치 2 마라톤맨 2012-01-16 8972
12 정규표현식 012. 검색할 위치 1 마라톤맨 2012-01-13 9417
11 정규표현식 011. 검색 문자 개수 지정하기 머니북 2012-01-12 21316
10 정규표현식 010. 웹 서버 설정에도 필요 머니북 2012-01-11 13307