정의 및 사용 방법
문자열의 search() 함수는
문자열에서 주어진 정규 표현식과 일치하는 문자열을 검색해, 첫 번째 위치의 인덱스(정수)를 반환합니다.
문자열에서 인덱스는 0부터 시작합니다.
특징
- 이 함수는 대소문자를 구분합니다.
- 검색 결과가 없으면
-1을 반환합니다.
기본 예제
const str = "apple orange banana orange Banana";
/* 문자열에서 주어진 정규 표현식과 일치하는 문자열을 검색해,
첫 번째 위치의 인덱스(정수)를 반환합니다. */
const searchPattern = /orange/;
const firstResult = str.search(searchPattern);
console.log(firstResult); // 출력: 6
/* 대소문자를 구분합니다.
예: "banana"와 "Banana"는 서로 다른 문자열로 취급됩니다. */
const upperCaseBanana = /Banana/;
const banana = str.search(upperCaseBanana);
console.log(banana); // 출력: 27
/* 검색하는 결과가 없으면 -1을 반환합니다. */
const hasNoSearchPattern = /mango/;
const notFoundResult = str.search(hasNoSearchPattern);
console.log(notFoundResult); // 출력: -1
추가 팁!
정규 표현식이 아닌, 단순히 검색어만 일치하는 문자열을 찾으려면 문자열의 indexOf() 함수를 사용해 보세요.
추가 팁!
주어진 문자열에 특정 문자열이 포함되어 있는지 여부만를 확인하려면 문자열의 includes() 함수를 사용해 보세요.
추가 팁!
문자열의 match() 함수는 정규 표현식을 사용하여 주어진 문자열과 일치하는 부분을 찾아 그 결과를 반환합니다.
구문
str.search(regexp)
str은 검색 대상이 되는 문자열입니다.
매개변수
regexp |
|
|---|
반환 값
주어진 정규 표현식과 일치하는 문자열을 검색해, 첫 번째 위치의 인덱스(정수)를 반환합니다.
검색 결과가 없으면 -1을 반환합니다.
매개변수와 반환 값 예시
매개변수가 없을 경우
search() 함수의 매개변수가 없을 경우, 다시 말해 아무런 인자를 전달하지 않을 경우 숫자 0을 반환합니다.
const str = "Hello, World!";
const result = str.search();
console.log(result); // 출력: 0
매개변수가 빈 문자열("")일 경우
매개변수가 빈 문자열("")일 경우 숫자 0을 반환합니다.
const str = "Hello, World!";
const result = str.search("");
console.log(result); // 출력: 0
매개변수가 공백 문자열(" ")일 경우
매개변수가 공백 문자열(" ")일 경우 해당 공백 문자열과 일치하는 부분을 검색합니다.
const str = "Hello, World!";
const result = str.search(" ");
console.log(result); // 출력: 6
매개변수와 일치하는 부분이 여러 개인 경우
매개변수와 일치하는 부분이 여러 개인 경우 문자열에서 첫 번째로 일치하는 인덱스만 검색해서 반환합니다.
const str = "apple orange orange orange";
const pattern = /orange/;
const result = str.search(pattern);
console.log(result); // 출력: 6
일치하는 부분이 여러 개일 때 모두 반환하고 싶어서 정규 표현식에 g (글로벌 검색) 플래그를 추가한 경우
정규 표현식의 g (글로벌 검색) 플래그는 search() 함수의 결과에 아무런 영향을 미치지 않습니다.
const str = "apple orange orange orange";
const pattern = /orange/g;
const result = str.search(pattern);
console.log(result); // 출력: 6
정규 표현식의 플래그는 /regex/flags와 같이 작성합니다. regex 자리에 정규 표현식 패턴이 오고, flags에 플래그가 옵니다. 위 코드 예제에서는 /orange/g로 작성한 것이고 정규 표현식 /orange/에 g (글로벌 검색) 플래그를 추가한 것입니다.
정규 표현식의 플래그는 다음과 같습니다.
| 플래그 | 설명 |
|---|---|
i |
Case-insensitive 플래그.
대소문자를 구분하지 않고 패턴을 검색합니다. |
g |
Global 플래그.
대상이 되는 문자열 내에서 패턴과 일치하는 모든 문자열을 글로벌로 검색합니다. |
m |
Multiline 플래그.
다중 행 문자열에서의 검색을 활성화합니다. |
주의하세요!
정규 표현식의 g (글로벌 검색) 플래그는 search() 함수에서 무시됩니다.
따라서, 플래그를 추가해도 결과는 변하지 않으며, 항상 첫 번째로 일치하는 위치만 반환합니다.
매개 변수와 일치하는 부분이 없는 경우
일치하는 패턴이 없으면 숫자 -1이 반환됩니다.
const str = "Hi, World!";
const pattern = /Hello/;
const result = str.search(pattern);
console.log(result); // 출력: -1
활용 예제
search() 함수는 정규 표현식을 사용하여 문자열에서 패턴을 찾을 때 제한적으로 활용할 수 있습니다. 다음의 활용 예제를 살펴보겠습니다.
이메일 주소 유효성 검사
const email = "example@example.com";
if (
email &&
email.trim() &&
email.search(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/) !== -1
) {
console.log("유효한 이메일 주소입니다.");
} else {
console.log("유효하지 않은 이메일 주소입니다.");
}
// 출력: "유효한 이메일 주소입니다."
코드 부연설명
trim() 함수는 문자열의 양 끝에서 공백을 제거한 새로운 문자열을 반환합니다.
호환성
| 메서드 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
Node.js
|
|---|---|---|---|---|---|
search()
|
1 | 12 | 1 | 4 | 0.10 |
명세서
| 명세서 사양 | |
|---|---|
search()
|
ECMAScript® 2026 Language Specification #sec-string.prototype.search |