글 쓰기에 앞서 정규표현식의 기본적인 문법을 알고 있다고 가정하겠다. 로그파일이나 html소스등 파싱해야 할 경우가 종종 생기는데 자바스크립트에서 정규표현식을 사용하여 원하는 문자열을 뽑아오는 방법이다.
"jekalmin 25 male 2014-08-22" 라는 로그가 있다고 가정하고 하나씩 뽑아와보자.
먼저 정규표현식을 작성해야 하는데, 작성할 때 유의할 사항은 뽑아내고자 하는 문자열을 괄호로 감싸야 한다.
이제 이 정규표현식을 그대로 자바스크립트로 가져오자.
자바스크립트에서 정규표현식 선언하는 방법은 두가지가 있다.
1. new RegExp(정규표현식)
ex.) var reg = new RegExp("(.+)\\s(\\d+)\\s(male|female)\\s(\\d{4}-\\d{2}-\\d{2})");
여기서는 이스케이프 처리(\ -> \\)를 해줘야한다.
2. /정규표현식/
ex.) var reg = /(.+)\s(\d+)\s(male|female)\s(\d{4}-\d{2}-\d{2})/;
가능하면 new 보다는 정규식 리터럴인 이 방법을 사용한다.
방법은 두가지이다.
하나는 string의 replace를 이용해서 $1, $2 가 첫번째, 두번째 괄호에 해당하는 문자열을 가리킨다.
두번째는 정규표현식의 exec을 이용하면 array를 리턴하는데, 0번째는 매칭되는 전체 문자열, 그 이후로는 첫번째, 두번째 괄호에 해당하는 문자열을 담고있다.
위의 코드 결과는
이런식으로 나타난다.
테스트 코드 주소 :
https://github.com/jekalmin/Jekal/blob/master/html/test/regexp_test.html