The search() method executes a search for a match between a regular expression and this String object.



A regular expression object. If a non-RegExp object obj is passed, it is implicitly converted to a RegExp by using new RegExp(obj).

Return value

The index of the first match between the regular expression and the given string; if not found, -1.


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 on the RegExp prototype, which returns a boolean); for more information (but slower execution) use match() (similar to the regular expression exec() method).


Using search()

The following example logs a message which depends on the success of the test.

function testinput(re, str) {
  var midstring;
  if ( != -1) {
    midstring = ' contains ';
  } else {
    midstring = ' does not contain ';
  console.log(str + midstring + re);


Specification Status Comment
ECMAScript 3rd Edition (ECMA-262) Standard Initial definition. Implemented in JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
The definition of '' in that specification.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of '' in that specification.
ECMAScript Latest Draft (ECMA-262)
The definition of '' in that specification.

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 with undefined, 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).

See also

Document Tags and Contributors

 Last updated by: torazaburo,