В javascript, есть ли эквивалент String.indexOf (), который принимает регулярное выражение вместо строки для первого первого параметра, но при этом разрешает второй параметр?
Мне нужно сделать что-то вроде
str.indexOf(/[abc]/ , i);
и
str.lastIndexOf(/[abc]/ , i);
Хотя String.search () принимает регулярное выражение в качестве параметра, оно не позволяет мне указать второй аргумент!
Edit:
Это оказалось сложнее, чем я думал, поэтому я написал небольшую тестовую функцию для проверки всех предоставленных решений ... предполагается, что regexIndexOf и regexLastIndexOf были добавлены в объект String.
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)]) ;
}
}
и я проверяю следующее, чтобы убедиться, что хотя бы для одного символа регулярное выражение, результат такой же, как если бы мы использовали indexOf
// Ищите а среди хэсов
тест ( 'ххх');
тест ( 'ахх');
тест ( 'хах');
тест ( 'XXA'); * * один тысяча двадцать-одна
тест ( 'ах');
тест ( 'хаа');
тест ( 'а');
тест ( 'ааа');