728x90
반응형
728x90
목 차
반응형
1. 정규식이란?
JavaScript에서 정규식(Regular Expression, RegExp)은 문자열에서 특정 패턴을 검색, 매칭, 대체하는 데 사용됩니다. 정규식은 강력하면서도 복잡한 도구로, 문자열 처리에서 많은 유연성을 제공합니다.
2. 정규식 플래그
- 정규식에는 다양한 플래그가 있어 동작 방식을 제어합니다.
플레그 | 설명 |
g | 글로벌 검색: 모든 일치 항목 검색 |
i | 대소문자 무시 |
m | 여러 줄 검색 (^, $가 여러 줄에 적용됨) |
s | 점(.)을 줄바꿈 문자(\n)과도 매치 |
u | 유니코드 모드 활성화 |
y | "sticky" 모드: 검색 위치 고정 |
const str = "Hello hello HELLO";
// `g`: 모든 일치 항목
console.log(str.match(/hello/g)); // ["hello"]
// `i`: 대소문자 무시
console.log(str.match(/hello/i)); // ["Hello"]
// `g`와 `i` 함께 사용
console.log(str.match(/hello/gi)); // ["Hello", "hello", "HELLO"]
3. 정규식 패턴
- 정규식의 패턴은 특정 문자열을 표현하거나 매칭 조건을 지정합니다.
문자 | 설명 | 예제 |
\d | 숫자(0-9) | /\d/.test("123") → true |
\D | 숫자가 아닌 문자 | /\D/.test("abc") → true |
\w | 단어 문자 (알파벳 + 숫자 + _) | /\w/.test("word") → true |
\W | 단어 문자가 아닌 문자 (특수문자) | /\W/.test("@") → true |
\s | 공백 문자 (스페이스, 탭 등) | /\s/.test(" ") → true |
\S | 공백이 아닌 문자 | /\S/.test("a") → true |
\b | 단어 경계 | /\bword\b/.test("word!") → true |
\B | 단어 경계가 아님 | /\Bword\B/.test("worded") → true |
4. 정규식 수량자
수량자 | 설명 | 예제 |
* | 0회 이상 | /a*/.test("aa") → true |
+ | 1회 이상 | /a+/.test("aa") → true |
? | 0회 또는 1회 | /a?/.test("b") → true |
{n} | 정확히 n회 | /a{2}/.test("aa") → true |
{n,} | 최소 n회 | /a{2,}/.test("aaa") → true |
{n,m} | 최소 n회, 최대 m회 | /a{1,3}/.test("aa") → true |
5. 정규식 문자 클래스
- [abc]: a, b, 또는 c 중 하나.
- [^abc]: a, b, c를 제외한 문자.
- [a-z]: 소문자 알파벳 범위.
console.log(/[aeiou]/.test("hello")); // true (모음 존재)
console.log(/[^aeiou]/.test("hello")); // true (모음이 아닌 문자 존재)
console.log(/[0-9]/.test("123abc")); // true (숫자 존재)
6. 정규식 경계
- ^: 문자열 시작.
- $: 문자열 끝.
console.log(/^hello/.test("hello world")); // true (시작이 "hello")
console.log(/world$/.test("hello world")); // true (끝이 "world")
7. 정규식 메서드
7-1. test() 메서드
- 문자열이 정규식과 일치하는지 검사하며, 결과는 true 또는 false입니다.
const regex = /hello/;
console.log(regex.test("hello world")); // true
console.log(regex.test("world")); // false
7-2. match() 메서드
- 문자열에서 정규식과 일치하는 부분을 배열로 반환합니다.
const str = "hello hello";
console.log(str.match(/hello/)); // ["hello"]
console.log(str.match(/hello/g)); // ["hello", "hello"]
7-3. replace() 메서드
- 정규식을 사용하여 문자열의 특정 부분을 교체합니다.
const str = "hello world";
console.log(str.replace(/hello/, "hi")); // "hi world"
7-4. split() 메서드
- 정규식을 기준으로 문자열을 나눕니다.
const str = "one,two,three";
console.log(str.split(/,/)); // ["one", "two", "three"]
7-5. exec() 메서드
- 정규식과 일치하는 문자열을 배열로 반환하며, 추가 정보를 제공합니다.
const regex = /(\d+)/;
const result = regex.exec("Order number: 12345");
console.log(result);
// ["12345", "12345", groups: undefined, index: 14, input: "Order number: 12345"]
728x90
반응형
'프로그래밍 > [javascript] 자바스크립트' 카테고리의 다른 글
[JavaScript] 자바스크립트 연산자 정리표 (0) | 2024.11.17 |
---|---|
[JavaScript] 자바스크립트 절대값 구하기 (abs함수) (0) | 2024.11.16 |
[JavaScript] 자바스크립트 날짜 계산하는 예제 (0) | 2024.11.14 |
[javascript] instanceof 연산자 설명 및 예제 (0) | 2024.11.14 |
[javascript] typeof 연산자 설명 및 예제 (0) | 2024.11.13 |