String.prototype.search()
사용법
문자열에서 search()
함수는
주어진 정규 표현식 패턴을 사용하여 문자열 내에서 검색(search)해서 첫 번째로 일치하는 위치(인덱스)를 반환하는 함수입니다.
- 이 함수는 대소문자를 구분합니다.
- 검색하는 결과가 없으면
-1
을 반환합니다.
const str = "apple orange banana orange Banana";
/* 문자열에서
첫 번째로 일치하는 패턴만 찾아서 위치(인덱스)를 반환합니다. */
const searchPattern = /orange/;
const firstResult = str.search(searchPattern);
console.log(firstResult); // 출력: 6
/* 대소문자를 구분합니다. */
const upperCaseBanana = /Banana/;
const banana = str.search(upperCaseBanana);
console.log(banana); // 출력: 27
/* 검색하는 결과가 없으면 -1을 반환합니다. */
const hasNoSearchPattern = /mango/;
const notFoudResult = str.search(hasNoSearchPattern);
console.log(notFoudResult); // 출력: -1
search()
함수의 형식은 다음과 같습니다.
구문
str.search(regexp)
str
은 검색 대상이 되는 문자열입니다.
매개변수
regexp |
|
---|
반환 값
주어진 정규 표현식 패턴을 사용하여 문자열 내에서 검색(search)해서 첫 번째로 일치하는 위치(인덱스)를 반환합니다.
검색하는 결과가 없으면 숫자 -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
|
---|---|---|---|---|
search()
|
1 | 12 | 1 | 4 |
명세서
명세서 사양 | |
---|---|
search()
|
ECMAScript Language Specification #sec-string.prototype.search |