--- title: String.prototype.search() slug: Web/JavaScript/Reference/Global_Objects/String/search tags: - JavaScript - 原型 - 参考 - 字符串 - 方法 - 正则表达式 translation_of: Web/JavaScript/Reference/Global_Objects/String/search ---
search()
方法执行正则表达式和 {{jsxref("String")}} 对象之间的一个搜索匹配。
str.search(regexp)
regexp
regexp
,则会使用 new RegExp(regexp)
隐式地将其转换为正则表达式对象。如果匹配成功,则 search()
返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1
。
当你想要知道字符串中是否存在某个模式(pattern)时可使用 search()
,类似于正则表达式的 {{jsxref("RegExp.test", "test()")}} 方法。当要了解更多匹配信息时,可使用 {{jsxref("String.match", "match()")}}(但会更慢一些),该方法类似于正则表达式的 {{jsxref("RegExp.exec", "exec()")}} 方法。
search()
下面的例子中用两个不同的正则表达式对同一个字符串执行搜索匹配,得到一个成功匹配(正数返回值)和一个失败匹配(-1)。
var str = "hey JudE"; var re = /[A-Z]/g; var re2 = /[.]/g; console.log(str.search(re)); // returns 4, which is the index of the first capital letter "J" console.log(str.search(re2)); // returns -1 cannot find '.' dot punctuation
Specification |
---|
{{SpecName('ESDraft', '#sec-string.prototype.search', 'String.prototype.search')}} |
{{Compat("javascript.builtins.String.search")}}
search()
的实现有问题:在调用该方法时,若不传递参数或者参数为 {{jsxref("undefined")}},该方法将不会匹配空字符串,而是匹配字符串 "undefined"。这个问题已被修复,现在,"a".search()
和 "a".search(undefined)
都能正确返回 0。flags
argument is deprecated and throws a console warning ({{bug(1142351)}}).flags
argument is no longer supported in non-release builds and will soon be removed entirely ({{bug(1245801)}}).flags
argument is no longer supported ({{bug(1108382)}}).