在JavaScript中,indexOf()和search()有什么区别?

对于JavaScript来说相当新,我无法辨别何时使用这些。

任何人都可以帮我澄清这一点?

如果您需要正则expression式,请使用search() 。 否则, indexOf()会更快。

indexOf是纯粹的子string, search可以做正则expression式。

search函数( 这里是一个描述 )需要一个正则expression式,它允许你匹配更复杂的模式,不区分大小写的string等,而indexOf( 这里的一个描述 )只是匹配一个文字string。 但是,indexOf也允许你指定一个开始索引。

我认为主要的区别是search接受正则expression式。

检查这个参考:

  • search
  • 指数

search发现它与正则expression式匹配,但没有偏移量。 IndexOf使用文字来匹配,但有一个偏移量。

指数

search

IndexOf() – 它接受string文字或string对象,但接受正则expression式。 它也接受一个从零开始的整数值来开始search,例如:

  1. “babyelephant” .indexOf( “E”); //给你4
  2. “babyelephant” .indexOf( “E”,5); //从第6位或第5位开始search
  3. var m = / e /; “babyelephant” .indexOf(米); //给出-1,因为它不接受正则expression式。

search() – 接受string文字或string对象和正则expression式。 但是它不接受索引来开始search。

没有正则expression式 , indexOf和search没有实际区别。

下面的例子给出了一个现场演示 :

 function FromSearch() { var str = document.getElementById("demo").innerText; var n = str.search("difference"); document.getElementById("Location").innerHTML = n; } function FromindexOf() { var str = document.getElementById("demo").innerText; var n = str.indexOf("difference"); document.getElementById("Location").innerHTML = n; } 
 <p id="demo">Without a <a href='http://www.w3schools.com/js/js_regexp.asp'>regex</a>, there is no practical difference between <a href='http://www.w3schools.com/jsref/jsref_indexof.asp'>indexOf</a> and <a href='http://www.w3schools.com/jsref/jsref_search.asp'>search</a> </p> <button onclick="FromSearch()">From search</button> <button onclick="FromindexOf()">From indexOf</button> <p>Location of difference in the above sentence is:</p> <mark id="Location"></mark>