1. 정규식(RegEx)이란?
정규식은 문자열에서 특정 패턴을 찾거나, 검증하거나, 변환하는 데 사용
- 표현식 작성법:
/패턴/플래그
- 주요 용도:
- 문자열 검색 (패턴 매칭)
- 문자열 형식 검증 (이메일, IP 주소 등)
- 문자열 치환 (검색 후 변환)
2. test
란?
정규식 객체의 메서드로, 문자열이 정규식과 매칭되는지 여부를 확인
결과:
true
(매칭됨) 또는false
(매칭되지 않음)형식:
정규식.test(문자열)
예제:
regex = /^hello/; // 'hello'로 시작하는지 확인 console.log(regex.test('hello world')); // true console.log(regex.test('world hello')); // false const regex = /hello/; // 'hello'라는 문자열이 포함되었는지 확인 const regex = /world$/; // 'world'로 끝나는지 확인 const regex = /^\d+$/; // 숫자만 포함되었는지 확인 const regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; const regex = /\s/; // 공백이 포함되었는지 확인 const regex = /apple/; //특정 문자열이 여러 번 포함되었는지 확인
i.test(this.regex);
플래그 활용:
대소문자 무시: i
여러 줄 매칭: m
3. 정규식에서 자주 사용하는 기호
기호 | 설명 | 예시 |
---|---|---|
^ |
문자열의 시작 | /^10/ → 10 으로 시작하는 문자열 |
$ |
문자열의 끝 | /255$/ → 255 로 끝나는 문자열 |
. |
임의의 한 문자 | /a.b/ → a 와 b 사이에 아무 문자 하나 |
\ |
특수 문자를 문자 그대로 표현 | /\./ → . (실제 점) |
[] |
문자 집합 (하나 선택) | /[abc]/ → a , b , c 중 하나 매칭 |
- |
범위 지정 | /[0-9]/ → 숫자 0~9 매칭 |
` | ` | OR 조건 |
? |
0번 또는 1번 등장 (선택적) | /a?b/ → b 또는 ab 매칭 |
* |
0번 이상 등장 | /a*b/ → b , ab , aab 매칭 |
+ |
1번 이상 등장 | /a+b/ → ab , aab , aaab 매칭 |
{n,m} |
n번 이상 m번 이하 등장 | /a{2,4}/ → aa , aaa , aaaa 매칭 |
4. 예제
IP 주소 검증 정규식
const ipPattern = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
- 목적: IPv4 주소 형식(0.0.0.0 ~ 255.255.255.255)을 검증
- 구성:
(25[0-5])
: 숫자 250~255(2[0-4][0-9])
: 숫자 200~249([01]?[0-9][0-9]?)
: 숫자 0~199\.
: 각 숫자를 점으로 구분^
와$
: 문자열의 시작과 끝
- 사용:
const isValidIP = ipPattern.test('192.168.0.1'); // true const isNotValidIP = ipPattern.test('256.1.1.1'); // false
정규식이란?
- 특정 문자열 패턴을 찾고, 검증하고, 변환하는 도구.
test
메서드란?- 정규식과 문자열이 매칭되는지
true
/false
로 반환.
- 정규식과 문자열이 매칭되는지
IP 주소 정규식
^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|...)$
- IPv4 형식을 확인:
0.0.0.0
부터255.255.255.255
까지.
기본 정규식 문법
^
,$
,[ ]
,|
,?
,*
,{n,m}
등으로 조건 구성.
정규식 활용법
- 검색: 특정 패턴 찾기 (
/hello/
) - 검증: 형식 체크 (
/^\d{3}-\d{2}-\d{4}$/
) - 치환: 문자열 변환 (
'apple'.replace(/a/, 'A')
→Apple
)
- 검색: 특정 패턴 찾기 (