[JS] 정규표현식
정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. javascript에서는 정규 표현식도 객체로서, RegExp의 exec()와 test() 메서드를 사용할 수 있습니다.
#01. 정규 표현식 만들기
정규 표현식은 두 가지 방법으로 만들 수 있다.
1. 정규 표현식 리터럴.
슬래시로 패턴을 감싸서 작성한다.
const re = /ab+c/;
정규 표현식 리터럴은 바뀔 일이 없는 패턴의 경우 사용한다.
2. RegExp 객체의 생성자 호출.
const re = new RegExp("ab+c");
생성자 함수를 사용한다.
바뀔 수 있는 패턴이나, 사용자 입력 등 외부 출처에서 가져오는 패턴의 경우 사용한다.
#02. 정규 표현식 패턴 작성하기
정규 표현식 패턴은 /abc/
처럼 단순한 문자로 구성하거나, /ab+c/
와 /Chapter (\d+)\.\d*/
처럼 단순한 문자와 특수 문자의 조합으로 구성할 수도 있다.
특히 (\d+)
에 나타난 괄호는 정규 표현식에서 기억 장치처럼 쓰여서, 괄호의 안쪽 패턴과 일치한 부분을 나중에 사용할 수 있도록 기억한다.
#03. 정규표현식을 사용한 문자열 패턴 검사
정규표현식은 그 자체가 객체이며 test(str)
메서드를 포함한다.
이 메서드에 검사하고자 하는 내용을 파라미터로 전달하면 정규표현식을 충족할 경우 true
를, 충족하지 않을 경우 false
를 리턴한다.
const regex = /정규표현식/;
if (!regex.test(검사할내용)) {
... 내용이 정규표현식을 충족하지 않을 경우 실행 ...
}
#04. 자주 사용되는 정규표현식
숫자 모양에 대한 형식 검사
/^[0-9]*$/
영문으로만 구성되었는지에 대한 형식 검사
/^[a-zA-Z]*$/
한글로만 구성되었는지에 대한 형식 검사
/^[ㄱ-ㅎ가-힣]*$/
영문과 숫자로만 구성되었는지에 대한 형식 검사
/^[a-zA-Z0-9]*$/
한글과 숫자로만 구성되었는지에 대한 형식 검사
/^[ㄱ-ㅎ가-힣0-9]*$/
이메일 형식인지에 대한 검사.
아이디@도메인의 형식을 충족해야 한다.
/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
’-‘없이 핸드폰번호인지에 대한 형식검사.
/^01(?:0|1|[6-9])(?:\d{3}|\d{4})\d{4}$/
’-‘없이 전화번호인지에 대한 형식검사.
각 부분에 대한 자리수도 충족시켜야 한다.
/^\d{2,3}\d{3,4}\d{4}$/