I’m trying to get a case-insensitive search with two strings in JavaScript working.
Normally it would be like this:
var string='Stackoverflow is the BEST'; var result= string.search(/best/i); alert(result);
The /i flag would be for case-insensitive.
But I need to search for a second string; without the flag it works perfect:
var string='Stackoverflow is the BEST'; var searchstring='best'; var result= string.search(searchstring); alert(result);
If I add the /i flag to the above example it would search for searchstring and not for what is in the variable ‘searchstring’ (next example not working):
var string='Stackoverflow is the BEST'; var searchstring='best'; var result= string.search(/searchstring/i); alert(result);
How can I achieve this?
Yeah, use
.match, rather than.search. The result from the.matchcall will return the actual string that was matched itself, but it can still be used as a boolean value.Using a regular expression like that is probably the tidiest and most obvious way to do that in JavaScript, but bear in mind it is a regular expression, and thus can contain regex metacharacters. If you want to take the string from elsewhere (eg, user input), or if you want to avoid having to escape a lot of metacharacters, then you’re probably best using
indexOflike this: