The search()
method executes a search for a match between a regular expression and this String
object.
Syntax
str.search(regexp)
Parameters
regexp
- A regular expression object. If a non-RegExp object
obj
is passed, it is implicitly converted to aRegExp
by usingnew RegExp(obj)
.
Return value
The index of the first match between the regular expression and the given string; if not found, -1.
Description
When you want to know whether a pattern is found and also its index in a string use search()
(if you only want to know it exists, use the similar test()
method, which returns a boolean); for more information (but slower execution) use match()
(similar to the regular expression exec()
method).
Examples
Using search()
The following example logs a message which depends on the success of the test.
function testinput(re, str) { var midstring; if (str.search(re) != -1) { midstring = ' contains '; } else { midstring = ' does not contain '; } console.log(str + midstring + re); }
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 3rd Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.2. |
ECMAScript 5.1 (ECMA-262) The definition of 'String.prototype.search' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'String.prototype.search' in that specification. |
Standard | |
ECMAScript 2017 Draft (ECMA-262) The definition of 'String.prototype.search' in that specification. |
Draft |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Gecko-specific notes
- Prior to Gecko 8.0,
search()
was implemented incorrectly; when it was called with no parameters or withundefined
, it would match against the string 'undefined', instead of matching against the empty string. This is fixed; now'a'.search()
and'a'.search(undefined)
correctly return 0. - Starting with Gecko 39 (Firefox 39 / Thunderbird 39 / SeaMonkey 2.36), the non-standard
flags
argument is deprecated and throws a console warning (bug 1142351). - Starting with Gecko 47 (Firefox 47 / Thunderbird 47 / SeaMonkey 2.44), the non-standard
flags
argument is no longer supported in non-release builds and will soon be removed entirely (bug 1245801). - Starting with Gecko 49 (Firefox 49 / Thunderbird 49 / SeaMonkey 2.46), the non-standard
flags
argument is no longer supported (bug 1108382).