Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

heyday2024 님의 블로그

RegEXP 본문

카테고리 없음

RegEXP

heyday2024 2024. 12. 9. 09:49

 알고리즘 코드 카타를 진행하면서 새롭게 알게된 RegExp에 대해 정리해보았습니다.

function solution(s) {
  numberArray = [
    "zero",
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine"
  ];

  numberArray.forEach((number, index) => {
     const regex = new RegExp(number, "g"); 
     s = s.replace(regex, index);
  })
  
  return Number(s)
}

console.log(solution("one4seveneight")); //1478

(- 이런 식으로 replace와 쓰면 문자열 패턴을 찾아내어 해당 문자를 내가 원하는 다른 것으로 대체할 수 있음.)


JavaScript의 RegExp 객체는 정규 표현식을 만들고 문자열에서 특정 패턴을 검색하거나 작업을 수행할 때 사용됩니다. 정규 표현식에는 다양한 옵션이 있으며, 각각 특정 동작을 제어합니다.

RegExp 생성자 형식

const regex = new RegExp(pattern, flags);
  • pattern: 찾고자 하는 텍스트 패턴(문자열 또는 정규 표현식).
  • flags: 검색 동작을 제어하는 옵션 플래그

정규 표현식 플래그(flags)

flags는 검색의 동작을 제어하며, 정규 표현식에 옵션을 추가합니다.

 

<자주 사용하는 플래그 표로 정리!!>

g Global 패턴과 일치하는 모든 항목을 검색. 첫 번째 항목만 검색하려면 생략.
i Ignore Case 대소문자를 구분하지 않고 검색.
m Multiline 여러 줄에 걸쳐 패턴 검색. 문자열의 각 줄을 시작(^)과 끝($)으로 간주.
s Dotall .이 줄바꿈 문자(\n)도 포함하도록 설정.
u Unicode 유니코드 문자 처리 활성화. 유니코드 문자 처리나 \u{} 표기법을 사용할 때 필요.
y Sticky 문자열의 현재 위치부터 패턴 검색. 일치하지 않으면 검색 실패.

플래그 예시

1. g (Global)

모든 일치 항목을 검색:

const regex = /cat/g;
const str = "cat and another cat";
console.log(str.match(regex)); // ["cat", "cat"]

2. i (Ignore Case)

대소문자를 구분하지 않고 검색:

const regex = /cat/i;
const str = "Cat and another cat";
console.log(str.match(regex)); // ["Cat"]

3. m (Multiline)

여러 줄에서 각 줄의 시작과 끝을 확인:

const regex = /^cat/m;
const str = "cat on line 1\ncat on line 2";
console.log(str.match(regex)); // ["cat", "cat"]

4. s (Dotall)

.이 줄바꿈 문자도 포함하도록 설정:

const regex = /cat.*dog/s;
const str = "cat\nis\ndog";
console.log(str.match(regex)); // ["cat\nis\ndog"]

5. u (Unicode)

유니코드 문자를 정확히 처리:

const regex = /\u{1F600}/u; // 😀 (Unicode: U+1F600)
const str = "Hello 😀";
console.log(str.match(regex)); // ["😀"]

6. y (Sticky)

문자열의 현재 위치부터 일치 항목 검색:

const regex = /cat/y;
const str = "cat and another cat";
console.log(regex.exec(str)); // ["cat"]
regex.lastIndex = 5;
console.log(regex.exec(str)); // null (현재 위치에서 일치하지 않음)

정규식 메서드에서 플래그 활용

1. test

주어진 문자열에 패턴이 존재하는지 확인:

const regex = /hello/i;
console.log(regex.test("Hello world!")); // true

2. match

일치하는 모든 항목 반환:

const regex = /dog/g;
console.log("dog and another dog".match(regex)); // ["dog", "dog"]

3. replace

패턴과 일치하는 텍스트를 대체:

const regex = /cat/gi;
console.log("Cat and another cat".replace(regex, "dog")); // "dog and another dog"

플래그 조합 사용

플래그를 조합하여 사용 가능:

const regex = /cat/gi; // 대소문자 무시하고 전역 검색
const str = "Cat and another cat";
console.log(str.match(regex)); // ["Cat", "cat"]

정규 표현식과 함께 사용하는 메서드

  • exec: 일치하는 항목 정보를 객체로 반환.
  • test: 문자열에 패턴이 포함되어 있는지 확인.
  • match: 일치하는 텍스트 반환.
  • replace: 패턴과 일치하는 텍스트 대체.
  • search: 문자열에서 패턴 검색.
  • split: 패턴을 기준으로 문자열 나누기.

정규식 예시

이메일 유효성 검사:

const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test("test@example.com")); // true

숫자만 포함 확인:

const numberRegex = /^[0-9]+$/;
console.log(numberRegex.test("12345")); // true
console.log(numberRegex.test("123a45")); // false