쯔이's Dev

JS(11). 정규표현식 본문

카테고리 없음

JS(11). 정규표현식

jjhim531 2025. 1. 15. 19:10
반응형

정규표현식을 만드는 두 가지 방법:

  • new RegExp(): 생성자 함수로 정규표현식 객체 생성.
  • 리터럴 표기: 슬래시(/)를 사용하여 간단히 표현.
const regExp1 = new RegExp("script");  // 방법 1
const regExp2 = /script/;              // 방법 2

위 예제에서는 script라는 패턴을 찾는 정규표현식을 만듭니다.

1. test() 메서드

regExp2.test(str1);
/test/.test("This is a test"); // true
/hello/.test("world"); // false

문자열에서 정규표현식과 일치하는 부분이 있는지 확인하여 true 또는 false 반환.

 

2. exec() 메서드

regExp2.exec(str1);
/world/.exec("Hello world"); // "world"
/test/.exec("Hello world"); // null

문자열에서 정규표현식과 일치하는 값을 찾아 해당 값중 가장 처음에 찾은 값ㅇ르 반환. 찾은 값이 없으면 null 반환.

 

3. replace() 메서드

str1.replace(regExp2, "ㅇㅇ");
"hello world".replace(/world/, "JavaScript"); // "hello JavaScript"

문자열에서 정규표현식과 일치하는 값을 찾아 지정한 문자열로 대체.

 


 

정규표현식의 추가 활용

1. 플래그 사용

  • 정규표현식에는 검색 조건을 제어하는 플래그를 사용할 수 있습니다:
    • g: 전역 검색 (모든 일치값 찾기)
    • i: 대소문자 구분하지 않음
    • m: 여러 줄 모드
const str = "Hello World! hello again!";

// 대소문자 구분 없이 모든 "hello" 찾기
const regExp = /hello/gi;

console.log(regExp.test(str)); // true
console.log(str.replace(regExp, "Hi")); // "Hi World! Hi again!"

2. 패턴 활용

  • 특정 조건에 따라 문자열을 검색:
    • 숫자만 찾기: /\d+/
    • 알파벳만 찾기: /[a-zA-Z]+/
    • 이메일 형식 찾기: /\w+@\w+\.\w+/
const email = "user@example.com";
const emailPattern = /\w+@\w+\.\w+/;

console.log(emailPattern.test(email)); // true
console.log(email.match(emailPattern)); // ["user@example.com"]

3. 단어 단위로 검색

let regExp = /\bjquery\b/; // 정확히 'jquery'라는 단어만 찾음
area2.innerHTML += '/\\bjquery\\b/ : ' + regExp.test(str) + "<br>";
  • \b는 단어 경계를 의미.
  • 결과: true(단어 jquery가 포함되어 있음).

 

정규표현식의 메타문자 예시

 

. 임의의 한 문자 /a.b/ → "axb" a와 b 사이에 어떤 문자가 와도 일치합니다.
* 0개 이상 반복 /a*/ → "aaab" a가 0번 이상 반복되는 모든 경우에 일치합니다.
+ 1개 이상 반복 /a+/ → "aaa" a가 1번 이상 반복되는 경우에만 일치합니다.
? 0개 또는 1개 /colou?r/ → "color" u가 없거나 1번 포함된 경우에 일치합니다.
\d 숫자 /\d/ → "abc123" 문자열에서 숫자(0-9)를 찾습니다.
\w 알파벳, 숫자, 밑줄(_) /\w+/ → "hello_123" 단어를 구성하는 문자(알파벳, 숫자, _)의 1개 이상 반복에 일치합니다.
\s 공백 /\s/ → "a b" 공백 문자(스페이스, 탭 등)에 일치합니다.
^ 문자열의 시작 /^hello/ → "hello" 문자열이 hello로 시작하는 경우에 일치합니다.
$ 문자열의 끝 /world$/ → "world" 문자열이 world로 끝나는 경우에 일치합니다.



728x90
반응형