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
번호 제목 글쓴이 날짜 조회 수sort
29 정규표현식 009. 메타문자 4 머니북 2012-01-10 6631
28 정규표현식 003. 맛보기 울트라 수퍼 심화 단계 마라톤맨 2012-01-04 6693
27 정규표현식 005. 근데 어디다 쓰는 것인고? 마라톤맨 2012-01-06 6786
26 정규표현식 002. 맛보기 심화 단계 마라톤맨 2012-01-03 6801
25 정규표현식 004. 정규표현식이란? 마라톤맨 2012-01-05 7546
24 정규표현식 008. 메타문자 3 머니북 2012-01-09 7725
23 정규표현식 001. 맛보기 마라톤맨 2012-01-02 8402
22 정규표현식 017. 하위 표현식 2 마라톤맨 2012-01-27 8495
21 정규표현식 006. 메타문자 1 마라톤맨 2012-01-07 9105
20 정규표현식 013. 검색할 위치 2 마라톤맨 2012-01-16 9136
19 정규표현식 015. 최대 매치와 최소 매치 2 마라톤맨 2012-01-20 9251
» 정규표현식 028. 자바스크립트의 정규식 4 마라톤맨 2012-03-09 9300
17 정규표현식 027. 자바스크립트의 정규식 3 마라톤맨 2012-03-02 9482
16 정규표현식 012. 검색할 위치 1 마라톤맨 2012-01-13 9551
15 정규표현식 018. 하위 표현식 3 마라톤맨 2012-01-30 10177
14 정규표현식 024. 숙제와 답 마라톤맨 2012-02-17 10228
13 정규표현식 016. 하위 표현식 1 마라톤맨 2012-01-25 10351
12 정규표현식 020. IP 주소 유효성 검사 2 마라톤맨 2012-02-06 10906
11 정규표현식 026. 자바스크립트의 정규식 2 마라톤맨 2012-02-27 11218
10 정규표현식 007. 메타문자 2 마라톤맨 2012-01-08 12497