Symbol.search

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨January 2020⁩.

The Symbol.search static data property represents the well-known symbol Symbol.search. The String.prototype.search() method looks up this symbol on its first argument for the method that returns the index within a string that matches the current object.

For more information, see RegExp.prototype[Symbol.search]() and String.prototype.search().

Try it

class Search1 { constructor(value) { this.value = value; } [Symbol.search](string) { return string.indexOf(this.value); } } console.log("foobar".search(new Search1("bar"))); // Expected output: 3 

Value

The well-known symbol Symbol.search.

Property attributes of Symbol.search
Writableno
Enumerableno
Configurableno

Examples

js
class CaseInsensitiveSearch { constructor(value) { this.value = value.toLowerCase(); } [Symbol.search](string) { return string.toLowerCase().indexOf(this.value); } } console.log("foobar".search(new CaseInsensitiveSearch("BaR"))); // 3 

Specifications

Specification
ECMAScript® 2026 Language Specification
# sec-symbol.search

Browser compatibility

See also