What is the difference between indexOf() and search()?
Can anyone help clarify this for me?
If you require a regular expression, use
indexOf() is going to be faster.
The search function (one description here) takes a regular expression, which allows you to match against more sophisticated patters, case-insensitive strings, etc., while indexOf (one description here) simply matches a literal string. However, indexOf also allows you to specify a beginning index.
I think the main difference is that search accept regular expressions.
Check this reference:
IndexOf() – it accepts string literals or string objects but not regular expressions. It also accepts a zero-based integer value to start its search from, e.g.:
- “babyelephant”.indexOf(“e”); // gives you 4
- “babyelephant”.indexOf(“e”,5); // gives you 6 as the search
starts from 6th position or 5th index.
- var m= /e/; “babyelephant”.indexOf(m); //gives -1 as it doesnt
accepts regular expressions.
Search() – accepts both string literals or string objects and regular expressions. But it doesn’t accepts a index to start the search from.
indexOf() and search()
common in both
i) return the first occurrence of searched value
ii) return -1 if no match found
let str='Book is booked for delivery' str.indexOf('b') // returns position 8 str.search('b') // returns position 8
special in indexOf()
i) you can give starting search position as a second argument
str.indexOf('k') // 3 str.indexOf('k',4) // 11 (it start search from 4th position)
- special in search()
search value can be regular expression
str.search('book') // 8 str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)