2008-12-09 68 views

回答

163

如果您需要正則表達式,請使用search()。否則,indexOf()會更快。

+23

任何引用來支持這個說法? – robisrob 2016-01-13 17:30:37

+6

此外,即使您不想要,「搜索」也會將字符串評估爲正則表達式。 – cregox 2016-07-13 15:59:18

+8

@ cregox的評論很重要 - 試試``你好。「。search(」。「)` - 它返回0,而不是5,因爲`。`是「任何字符」的正則表達式標記 – JoeRocc 2017-06-22 03:05:15

7

我認爲主要的區別在於搜索接受正則表達式。

入住此引用:

12

搜索功能(one description here)需要一個正則表達式,它允許你來匹配更復雜的patters,不區分大小寫字符串等等,而indexOf(one description here)只是簡單地匹配一個文字字符串。但是,indexOf還允許您指定開始索引。

2

搜索發現它與正則表達式匹配,但沒有偏移量。 IndexOf使用文字進行匹配,但有一個偏移量。

IndexOf

Search

0

如果沒有regex,有indexOfsearch之間沒有實際區別。

下面的例子給出了一個現場demo

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>

3

的IndexOf() - 它接受字符串文字或字符串對象,但不正則表達式。它還接受從零開始的整數值以開始其搜索,例如:

  1. 「babyelephant」.indexOf(「e」); //給你4
  2. 「babyelephant」.indexOf(「e」,5); //給你6,因爲搜索 從第6位或第5位索引開始。
  3. var m =/e /; 「babyelephant」 .indexOf(米); //給出-1,因爲它不接受 接受正則表達式。

Search() - 接受字符串文字或字符串對象以及正則表達式。但它不接受索引來開始搜索。

相關問題