配列 - javascript search 正規表現




JavaScriptでは、indexOf()とsearch()の違いは何ですか? (5)

IndexOf() - 文字列リテラルまたは文字列オブジェクトを受け入れますが正規表現は受け付けません 。 また、次のように、検索を開始するためにゼロから始まる整数値を受け取ります。

  1. "babyelephant" .indexOf( "e"); //あなたに4を与える
  2. "babyelephant" .indexOf( "e"、5); 6番目の位置または5番目のインデックスから検索が始まると、// 6になります。
  3. var m = / e /; "babyelephant" .indexOf(m); //正規表現を受け入れないので-1を返します。

Search() - 文字列リテラルまたは文字列オブジェクトと正規表現の両方を受け入れます。 しかし、それは検索を開始するためのインデックスを受け入れません。

JavaScriptをかなり新しくしているので、これらのそれぞれをいつ使うのか分かりません。

誰かが私のためにこれを明確にするのを助けることができる?


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>


主な違いは、検索で正規表現を受け入れることだと思います。

この参照を確認してください:


検索で正規表現との一致が検出されますが、オフセットはありません。 IndexOfはリテラルを使用して一致させますが、オフセットを持ちます。

の指標

サーチ


正規表現が必要な場合は、 search()使用しsearch() 。 それ以外の場合は、 indexOf()が高速になります。







string