回答:
正規表現が必要な場合は、を使用してくださいsearch()
。そうでなければ、indexOf()
より速くなります。
search
必要がない場合でも、文字列を正規表現に評価します。
IndexOf()-文字列リテラルまたは文字列オブジェクトを受け入れますが、正規表現は受け入れません。また、ゼロから始まる整数値を受け入れて、検索を開始します。例:
Search()-文字列リテラルまたは文字列オブジェクトと正規表現の両方を受け入れます。ただし、検索を開始するためのインデックスは受け付けません。
"baby/e/lephant".indexOf(m);
ますか?
indexOf()およびsearch()
両方に共通
i)最初に検索された値を返す
ii)一致が見つからない場合は-1を返します
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
indexOf()の特別な
i)2番目の引数として検索開始位置を指定できます
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position)
検索値は正規表現にすることができます
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
正規表現がなければ、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>
search
に文字列を変換しますRegExp
ので、例えば、str.search("d........e");
また、文字39でマッチします