현재 문자열이 지정된 정규식과 매칭되는 부분을 테스트한다.
str.match(regExp)
정규표현식 객체를 설정한다. 정규표현식 객체에 대해서는 RegExp를 참고하길 바란다.
지정된 정규표현식과 일치하는 경우 g
플래그가 포함되었다면 일치하는 모든 문자열을 원소로 갖는 배열을 반환한다. g
플래그가 포함되어 있지 않다면 일치하는 첫 번째 문자열만 원소로 갖는 배열을 반환한다. 일치하는 게 없다면 null
을 반환한다.
match()
메소드의 사용
var emailRegexp = /[0-9a-zA-Z][_0-9a-zA-Z-]*@[_0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+){1,2}$/;
emailRegexp
라는 변수를 선언하고 리터럴로 정규표현식 객체를 생성한다. 리터럴이 아닌 방식으로 정규표현식 인스턴스 객체를 생성하는 경우에는 아래와 같이 new
키워드를 이용해서 RegExp()
생성자 함수를 실행한다. 생성자 함수의 인수로 정규표현식 패턴을 설정한다.
var emailRegexp = new RegExp("[0-9a-zA-Z][_0-9a-zA-Z-]*@[_0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+){1,2}$");
정규표현식 패턴은 매우 복잡하여 초보자(때론 중급자)가 직접 원하는 패턴을 작성하기가 어려울 수 있다. 쉬운 패턴 작성부터 시작하여 차근차근 공부하면 충분히 해낼 수 있으며 정규표현식을 잘 다루게 되면 막강한 무기를 장착했다고 볼 수 있다.
위의 이메일을 검증하는 패턴을 잠깐 분석한다면 이메일 주소는 일반적으로 영문과 숫자, -
, _
의 문자 조합으로 된 이메일 아이디와 그 뒤에 @
이 붙는다. @
뒤에는 각 이메일 호스트로 구성된다. 따라서 이러한 이메일 주소 패턴을 정규표현식으로 작성하면 된다.
패턴 중에 '[0-9a-zA-Z]'
은 한 문자열 속에 0
에서 9
까지 범위의 숫자 또는 소문자인 a
에서 z
까지의 알파벳과 대문자인 A
에서 Z
까지의 알파벳의 조합으로 구성되어야 한다는 뜻을 가지고 있다. 이렇게 정규표현식의 패턴을 작성할 때는 다양한 규칙이 있고 이 규칙을 활용하여 원하는 검사 패턴을 작성한다.
정규표현식에 대한 자세한 내용은 해당 객체인 RegExp 레퍼런스를 참조하길 바란다.
예제로 제공된 정규표현식 패턴은 올바른 이메일 주소를 검증하는 것으로 실제 코드에 사용하여도 훌륭하게 작동한다.
match()는 지정된 정규표현식 객체를 이용하여 해당 문자열을 검색한다. 샘플로 제시된 정규표현식 패턴은 g
플래그가 포함되지 않았으므로 일치하는 첫 번째 문자열을 원소로 갖는 배열을 반환한다. 일치하지 않는 경우에는 null
을 반환하므로 if
문으로 분기가 가능하다. 즉 null
은 불리언(boolean
)으로 강제 형변환이 되면 false
가 된다.