Summary: in this tutorial, you’ll learn how to use the JavaScript String search()
function to search for a match of a string with a regular expression and return the first match.
Introduction to the JavaScript String search() function
The search()
method matches a string with a regular expression and returns the index of the first match in the string:
let index = str.search(regexp);
Code language: JavaScript (javascript)
In this syntax, the regexp
is a regular expression object.
If you pass a value that is not a RegExp
object to the method, it will convert that value to a RegExp
object using the following expression:
RegExp(regexp)
Code language: JavaScript (javascript)
If the search()
doesn’t find any match, it returns -1.
Besides a regular expression object, you can pass any object that has Symbol.search()
method to the search()
method.
JavaScript String search() method examples
Let’s take some examples of using the JavaScript search()
function.
Basic JavaScript string search() method usages
The following example uses the search()
method to return the first occurrence of a capital letter in a string:
let re = /[A-Z]/;
let str = 'hi There! How are you?';
let index = str.search(re);
console.log(index);
Code language: JavaScript (javascript)
Output:
3
Code language: JavaScript (javascript)
It returns 3
which is the index of the capital letter T
.
The following example returns -1
because there is no number in the string:
let re = /[0-9]/;
let str = 'Hello, JavaScript!';
let index = str.search(re);
console.log(index);
Code language: JavaScript (javascript)
Output:
-1
Code language: JavaScript (javascript)
Passing an object with the Symbol.search method
The following example illustrates how to use the search()
method with an object that has the Symbol.search
method:
class EmailDomainChecker {
constructor(domain) {
this.domain = domain;
}
[Symbol.search](email) {
if (!email.includes("@")) {
return -1;
}
const [, domain] = email.split("@");
return domain === this.domain ? 1 : -1;
}
}
const js = new EmailDomainChecker("javascripttutorial.net");
let isJsEmail = "[email protected]".search(js) === 1;
console.log({ isJsEmail });
isJsEmail = "[email protected]".search(js) === 1;
console.log({ isJsEmail });
Code language: JavaScript (javascript)
Output:
{ isJsEmail: true }
{ isJsEmail: false }
Code language: JavaScript (javascript)
How it works.
First, define a class EmailDomainChecker
with a Symbol.search
method that returns 1 if the email has a domain that matches with a specified domain, or -1 otherwise.
class EmailDomainChecker {
constructor(domain) {
this.domain = domain;
}
[Symbol.search](email) {
if (!email.includes("@")) {
return -1;
}
const [, domain] = email.split("@");
return domain === this.domain ? 1 : -1;
}
}
Code language: JavaScript (javascript)
Second, create a new EmailDomainChecker object with the gmail.com
domain:
const js = new EmailDomainChecker("javascripttutorial.net");
Code language: JavaScript (javascript)
Third, check if the email [email protected]
comes from the javascripttutorial.net
domain using the search()
method:
let isJsEmail = "[email protected]".search(js) === 1;
console.log({ isJsEmail });
Code language: JavaScript (javascript)
The search() method will invoke the Symbol.search
method of the js
object that returns 1 in this case.
Finally, check if the [email protected]
email belongs to the domain name javascripttutorial.net
:
isJsEmail = "[email protected]".search(js) === 1;
console.log({ isJsEmail });
Code language: JavaScript (javascript)
It returns -1 in this case.
Summary
- Use the JavaScript String
search()
to find the index of the first match based on a regular expression in a string.