String.prototype.search()
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]()
。
regexp
的 g
标志对 search()
结果没有影响,并且搜索始终像正则表达式的 lastIndex
为 0 一样进行。有关 search()
行为的更多信息,请参阅 RegExp.prototype[Symbol.search]()
。
当您想知道是否找到了模式,并且也想知道其在字符串中的索引时,请使用 search()
。
- 如果您只想了解它是否存在,请使用
RegExp.prototype.test()
方法,该方法返回布尔值。 - 如果您需要匹配文本的内容,请使用
String.prototype.match()
或RegExp.prototype.exec()
。
示例
使用 search()
以下示例使用两个不同的正则表达式对象搜索字符串,以显示成功的搜索(正值)与不成功的搜索(-1
)。
js
const str = "hey JudE";
const re = /[A-Z]/;
const reDot = /[.]/;
console.log(str.search(re)); // returns 4, which is the index of the first capital letter "J"
console.log(str.search(reDot)); // returns -1 cannot find '.' dot punctuation
规范
规范 |
---|
ECMAScript 语言规范 # sec-string.prototype.search |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。