String.prototype.search()
尝试一下
search()
方法执行正则表达式和 String
对象之间的一个搜索匹配。
语法
str.search(regexp)
参数
regexp
- 一个
正则表达式(regular expression)
对象。如果传入一个非正则表达式对象regexp
,则会使用new RegExp(regexp)
隐式地将其转换为正则表达式对象。
返回值
如果匹配成功,则 search()
返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1
。
描述
示例
例子:使用 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 |
---|
ECMAScript (ECMA-262) String.prototype.search |
浏览器兼容性
BCD tables only load in the browser
Gecko 注意事项
- 在 Gecko 8.0 及之前的版本,
search()
的实现有问题:在调用该方法时,若不传递参数或者参数为undefined
,该方法将不会匹配空字符串,而是匹配字符串 "undefined"。这个问题已被修复,现在,"a".search()
和"a".search(undefined)
都能正确返回 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).