В javascript существует ли эквивалент String.indexOf(), который принимает регулярное выражение вместо строки для первого первого параметра, сохраняя при этом второй параметр?
Мне нужно сделать что-то вроде
str.indexOf(/[abc]/ , i);
и
str.lastIndexOf(/[abc]/ , i);
В то время как String.search() принимает значение regexp как параметр, он не позволяет мне указать второй аргумент!
Edit:
Это оказалось сложнее, чем я изначально думал, поэтому я написал небольшую тестовую функцию для проверки всех предоставленных решений... он предполагает, что в объект String добавлены regexIndexOf, а regexLastIndexOf.
function test (str) {
var i = str.length +2;
while (i--) {
if (str.indexOf('a',i) != str.regexIndexOf(/a/,i))
alert (['failed regexIndexOf ' , str,i , str.indexOf('a',i) , str.regexIndexOf(/a/,i)]) ;
if (str.lastIndexOf('a',i) != str.regexLastIndexOf(/a/,i) )
alert (['failed regexLastIndexOf ' , str,i,str.lastIndexOf('a',i) , str.regexLastIndexOf(/a/,i)]) ;
}
}
и я тестирую следующее, чтобы убедиться, что, по крайней мере, для одного символа regexp, результат будет таким же, как если бы мы использовали indexOf
//Ищите a среди xes
тест ( 'ххх');
тест ( 'ахх');
тест ( 'хах');
тест ( 'XXA');
тест ( 'ах');
тест ( 'хаа');
тест ( 'а');
тест ( 'ааа');