정규 표현식 생성
/pattern/flagsnew RegExp(pattern, flags)예:
let regex1 = /abc/g; // 리터럴 구문
let regex2 = new RegExp('abc', 'g'); // 생성자 함수
정규 표현식 패턴
정규 표현식의 패턴은 다음과 같은 요소들로 구성될 수 있습니다:
/apple/는 "apple" 문자열을 찾습니다.[abc]는 a, b, c 중 하나의 문자를 찾습니다.{m, n}는 m~n번 반복되는 문자/패턴을 찾습니다.(abc)는 "abc"를 그룹으로 취급합니다.\d는 숫자를, \w는 알파벳 문자를, \s는 공백을 찾습니다.. ^ $ * + ? = ! : | \ / ( ) [ ] { }.: 어떠한 문자와도 일치합니다 (단, 줄바꿈 문자를 제외한). 예를 들어, h.t는 "hat", "hit", "hot" 등과 일치합니다.
^: 문자열이나 줄의 시작을 나타냅니다. ^A는 "A"로 시작하는 모든 문자열에 일치합니다.
$: 문자열이나 줄의 끝을 나타냅니다. A$는 "A"로 끝나는 모든 문자열에 일치합니다.
*: 앞의 문자가 0회 이상 반복됨을 나타냅니다. a*는 "", "a", "aa", "aaa" 등과 일치합니다.
+: 앞의 문자가 1회 이상 반복됨을 나타냅니다. a+는 "a", "aa", "aaa" 등과 일치합니다. (하지만 ""와는 일치하지 않습니다.)
?: 앞의 문자가 0회 또는 1회 등장함을 나타냅니다. a?는 "" 또는 "a"와 일치합니다.
{n}: 앞의 문자가 정확히 n회 반복됨을 나타냅니다. a{3}는 "aaa"와 일치합니다.
{n,}: 앞의 문자가 최소한 n회 반복됨을 나타냅니다. a{2,}는 "aa", "aaa", "aaaa" 등과 일치합니다.
{n,m}: 앞의 문자가 최소 n회, 최대 m회 반복됨을 나타냅니다. a{2,3}는 "aa", "aaa"와 일치합니다.
[]: 대괄호 안의 어떠한 문자와도 일치합니다. [abc]는 "a", "b", "c" 중 어느 하나와 일치합니다.
[^abc]: 대괄호 안의 문자를 제외한 모든 문자와 일치합니다. [^abc]는 "a", "b", "c"를 제외한 모든 문자와 일치합니다.
|: 두 패턴 중 하나와 일치함을 나타냅니다 (OR 연산자). a|b는 "a" 또는 "b"와 일치합니다.
(): 괄호 안의 문자를 하나의 단위로 취급합니다. 이를 이용해 그룹을 만들고, | 연산자와 함께 사용할 수 있습니다. 예를 들어, (abc|def)는 "abc" 또는 "def"와 일치합니다.
\: 이스케이프 문자로,
특수 문자를 문자 그대로 해석하게 합니다. 예를 들어, \.는 문자 "."와 일치합니다. 또한 특별한 시퀀스를 나타내기도 합니다 (예: \d는 모든 숫자와 일치).
정규 표현식 플래그
정규 표현식의 플래그는 다음과 같은 것들이 있습니다:
g: 전역 검색 (문자열 전체에서 패턴 찾기)i: 대/소문자 무시m: 여러 줄 모드u: 유니코드 패턴을 사용하도록 지시y: "sticky" 검색을 수행하도록 지시정규 표현식 메서드
정규 표현식은 주로 다음과 같은 문자열 메서드와 함께 사용됩니다:
test(): 패턴이 문자열에 존재하는지 테스트하고, 참/거짓을 반환합니다.match(): 문자열에서 패턴을 찾아 일치하는 항목을 반환합니다.search(): 문자열에서 패턴을 찾고, 패턴의 시작 인덱스를 반환합니다.replace(): 문자열에서 패턴을 찾아 다른 문자열로 교체합니다.split(): 패턴을 사용하여 문자열을 분할합니다.let phone = "123-456-7890";
let phoneRegexp = /^\d{3}[-\s]?\d{3}[-\s]?\d{4}$/;
console.log(phoneRegexp.test(phone)); // 출력: true
let url = "https://www.example.com";
let urlRegexp = /^(https?:\/\/)?(www\.)?([a-zA-Z0-9-])+(\.[a-z]{2,})+$/;
console.log(urlRegexp.test(url)); // 출력: true
let username = "username123";
let usernameRegexp = /^[a-zA-Z0-9]{4,12}$/;
console.log(usernameRegexp.test(username)); // 출력: true
/^\d{3}[-\s]?\d{3}[-\s]?\d{4}$/;^ : 문자열의 시작을 나타냅니다.\d{3} : 연속한 세 개의 숫자를 찾습니다.[-\s]? : 하이픈(-) 또는 공백 문자를 선택적으로 찾습니다.\d{3} : 그 다음으로 연속한 세 개의 숫자를 찾습니다.[-\s]? : 또 다시 하이픈(-) 또는 공백 문자를 선택적으로 찾습니다.\d{4} : 마지막으로 연속한 네 개의 숫자를 찾습니다.$ : 문자열의 끝을 나타냅니다./^(https?:\/\/)?(www\.)?([a-zA-Z0-9-])+(\.[a-z]{2,})+$/;^ : 문자열의 시작을 나타냅니다.(https?:\/\/)? : 'http://' 또는 'https://'를 선택적으로 찾습니다.(www\.)? : 'www.'을 선택적으로 찾습니다.([a-zA-Z0-9-])+ : 알파벳, 숫자, 하이픈이 하나 이상 연속으로 나오는 패턴을 찾습니다. 이는 도메인 이름에 해당합니다.(\.[a-z]{2,})+ : 점과 그 뒤에 연속한 두 개 이상의 소문자 알파벳이 하나 이상 있는 패턴을 찾습니다. 이는 최상위 도메인(TLD)에 해당합니다.$ : 문자열의 끝을 나타냅니다./^[a-zA-Z0-9]{4,12}$/;^ : 문자열의 시작을 나타냅니다.[a-zA-Z0-9]{4,12} : 소문자 알파벳, 대문자 알파벳, 숫자가 4자 이상 12자 이하로 연속하는 패턴을 찾습니다.$ : 문자열의 끝을 나타냅니다.