관련지식
javascript, regexp, regular expression

자바스크립트의 문자열에서 쓸수 있는 함수인 match()replace() 함수등은 정규표현식을 사용할수 있습니다.

  1. var str = 'For more information, see Chapter 3.4.5.1';
  2. var re = /see (chapter \d+(\.\d)*)/i;
  3. var found = str.match(re);

그런데 위와 같은 형태에서는 정규식에 변수를 사용할수가 없습니다. 변수를 사용하면 그냥 정규식의 일부가 될 뿐이죠. 정규식에 변수를 사용하려면 RegExp를 사용하면 됩니다. 아래 두개의 정규식은 완전히 동일합니다.

  1. var test = 'abc012eiR';
  2. var re1 = /[a-z]*/;
  3. console.log(test.replace(re1, ''));
  4. var re2 = new RegExp('[a-z]*');
  5. console.log(test.replace(re2, ''));

문자열의 끝을 의미하는 g 대소문자를 무시하는 i 같은 옵션을 줄수 있습니다. RegExp의 두번째 인자에 옵션을 넣을수 있습니다. 아래의 정규식도 역시 동일한 결과를 나타냅니다.

  1. var test = 'abc012eiR';
  2. var re1 = /[a-z]*/gi;
  3. console.log(test.replace(re1, ''));
  4. var re2 = new RegExp('[a-z]*', 'gi');
  5. console.log(test.replace(re2, ''));