String.prototype.search()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

search() 方法用于在 String 对象中执行正则表达式的搜索,寻找匹配项。

尝试一下

语法

js
search(regexp)

参数

regexp

一个正则表达式对象,或者具有 Symbol.search 方法的任意对象。

如果 regexp 不是 RegExp 对象,并且不具有 Symbol.search 方法,则会使用 new RegExp(regexp) 将其隐式转换为 RegExp

返回值

如果匹配成功,则返回正则表达式在字符串中首次匹配的索引;否则,返回 -1

描述

String.prototype.search() 方法的实现非常简单——它只是将该字符串作为调用实参拥有的 Symbol.search 方法的第一个参数。实际的实现来自于 RegExp.prototype[Symbol.search]()

regexpg 标志对 search() 方法的结果没有影响,搜索总是以正则表达式的 lastIndex 为 0 进行。有关 search() 方法行为的更多信息,请参阅 RegExp.prototype[Symbol.search]()

当你想知道字符串中是否存在某个模式,并且想知道它在字符串中的索引时,可以使用 search() 方法。

示例

下面的示例中用两个不同的正则表达式对同一个字符串执行搜索匹配,得到一个成功匹配(正数返回值)和一个失败匹配(-1)。

js
const str = "hey JudE";
const re = /[A-Z]/;
const reDot = /[.]/;
console.log(str.search(re)); // 返回 4,这是第一个大写字母“J”的索引
console.log(str.search(reDot)); // 返回 -1,找不到点符号“.”

规范

Specification
ECMAScript Language Specification
# sec-string.prototype.search

浏览器兼容性

BCD tables only load in the browser

参见