const str = "apple orange banana apple";

/* 문자열에서
   첫 번째로 일치하는 패턴만 찾아서 배열로 반환합니다.
   (출력되는 배열의 첫 번째 요소는 일치하는 패턴의 문자열이,
   그 다음 요소들에는 index, input, groups 속성이 포함됩니다.) */
const pattern = /apple/;
const result = str.match(pattern);

console.log(result); // 출력: ["apple", index: 0, input: "apple orange banana apple", groups: undefined]
console.log(result.length); // 출력: 1
console.log(result[0]); // 출력: "apple"

/* 만약, 전체 텍스트에서 모든 일치하는 패턴의 문자열을 찾고 싶다면
   정규 표현식에 g (글로벌 검색) 플래그를 추가합니다.
   g 플래그가 없을 때 배열 요소로 출력되던 index, input, groups 속성은 포함되지 않으며,
   모든 일치하는 패턴의 문자열이 각각 배열의 요소로 반환됩니다. */
const globalPattern = /apple/g;
const globalResult = str.match(globalPattern);

console.log(globalResult); // 출력: ["apple", "apple"]
console.log(globalResult.length); // 출력: 2
console.log(globalResult[0]); // 출력: "apple"
console.log(globalResult[1]); // 출력: "apple"

/* 특정 패턴의 문자열을 검사하기
   이메일 주소 패턴을 검색 */
const userInfo = "내 이메일 주소는 user@example.com 입니다.";
const searchEmailPattern = /\w+@\w+\.\w+/g;
const searchEmailResult = userInfo.match(searchEmailPattern);

console.log(searchEmailResult); // 출력: ["user@example.com"]
console.log(searchEmailResult.length); // 출력: 1
console.log(searchEmailResult[0]); // 출력: "user@example.com"
str.match(regexp);
const str = "apple orange banana apple";
const pattern = /apple/; // g 플래그 없음
const result = str.match(pattern);

console.log(result);
// 출력: ["apple", index: 0, input: "apple orange banana apple", groups: undefined]

console.log(result.length); // 출력: 1
const str = "apple orange banana apple";
const globalPattern = /apple/g; // g 플래그 있음
const globalResult = str.match(globalPattern);

console.log(globalResult); // 출력: ["apple", "apple"]
console.log(globalResult.length); // 출력: 2
const str = "Hello, World!";
const result = str.match();

console.log(result); // 출력: ["", index: 0, input: 'Hello, World!', groups: undefined]
console.log(result.length); // 출력: 1
const str = "Hello, World!";
const result = str.match("");

console.log(result); // 출력: ["", index: 0, input: 'Hello, World!', groups: undefined]
console.log(result.length); // 출력: 1
const str = "Hello, World!";
const result = str.match(" ");

console.log(result); // 출력: [" ", index: 6, input: 'Hello, World!', groups: undefined]
console.log(result.length); // 출력: 1
const str = "apple orange banana apple";
const pattern = /apple/;

const result = str.match(pattern);
console.log(result); // 출력: ["apple", index: 0, input: 'apple orange banana apple', groups: undefined]
console.log(result.length); // 출력: 1
const str = "apple orange banana apple";
const pattern = /apple/g; // <= g (글로벌 검색) 플래그 추가
const result = str.match(pattern);

console.log(result); // 출력: ["apple", "apple"]
console.log(result[0]);
console.log(result[1]);
console.log(result.length); // 출력: 2
const str = "Apple orange banana Apple";

// g 플래그 없음 / i 플래그 있음
const pattern1 = /apple/i;
const result1 = str.match(pattern1);
console.log(result1); // 출력: ["Apple", index: 0, input: 'Apple orange banana Apple', groups: undefined]

// g 플래그 있음 / i 플래그 있음
const pattern2 = /apple/gi; // /apple/gi와 정확히 동일(플래그 순서는 자유)
const result2 = str.match(pattern2);
console.log(result2); // 출력: ["Apple", Apple"]
const str = "Hi, World!";
const pattern = /Hello/;
const result = str.match(pattern);

console.log(result); // 출력: null
const text = "문의는 help@example.com 또는 support@example.org 으로 연락 주시기 바랍니다.";

const emailPattern = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g;
const emailMatches = text.match(emailPattern);

console.log(emailMatches);
// 출력: ["help@example.com", "support@example.org"]
const text = "더 많은 정보는 https://www.example.com에서 확인하세요.";

const urlPattern = /\b(?:https?:\/\/)?(?:www\.)?[a-zA-Z0-9-]+(?:\.[a-z]{2,})+(?:\/[^\s]*)?\b/g;
const urlMatches = text.match(urlPattern);

console.log(urlMatches);
// 출력: ["https://www.example.com"]
const html = '<div class="container"><p>Hello, <b>world!</b></p></div>';
const tagPattern = /<[^>]+>/g;
const tags = html.match(tagPattern);

console.log(tags);
// 출력: ["<div class="container">", "<p>", "<b>", "</b></p>", "</div>"]
const css = '.header { color: #333; } .main-content { font-size: 16px; }';
const classPattern = /\.([a-zA-Z-_\d]+)/g;
const classes = css.match(classPattern);

console.log(classes);
// 출력: [".header", ".main-content"]