Skip to content
Advertisement

Is there a version of JavaScript’s String.indexOf() that allows for regular expressions?

In javascript, is there an equivalent of String.indexOf() that takes a regular expression instead of a string for the first first parameter while still allowing a second parameter ?

I need to do something like

JavaScript

and

JavaScript

While String.search() takes a regexp as a parameter it does not allow me to specify a second argument!

Edit:
This turned out to be harder than I originally thought so I wrote a small test function to test all the provided solutions… it assumes regexIndexOf and regexLastIndexOf have been added to the String object.

JavaScript

and I am testing as follow to make sure that at least for one character regexp, the result is the same as if we used indexOf

//Look for the a among the xes
test(‘xxx’);
test(‘axx’);
test(‘xax’);
test(‘xxa’);
test(‘axa’);
test(‘xaa’);
test(‘aax’);
test(‘aaa’);

Advertisement

Answer

Combining a few of the approaches already mentioned (the indexOf is obviously rather simple), I think these are the functions that will do the trick:

JavaScript

UPDATE: Edited regexLastIndexOf() so that is seems to mimic lastIndexOf() now. Please let me know if it still fails and under what circumstances.


UPDATE: Passes all tests found on in comments on this page, and my own. Of course, that doesn’t mean it’s bulletproof. Any feedback appreciated.

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement