在 javascript 中,是否有 String.indexOf() 的等价物,它采用正则表达式而不是第一个参数的字符串,同时仍然允许第二个参数?
我需要做类似的事情
str.indexOf(/[abc]/ , i);
和
str.lastIndexOf(/[abc]/ , i);
虽然 String.search() 将正则表达式作为参数,但它不允许我指定第二个参数!
编辑:
结果证明这比我原先想象的要难,所以我写了一个小测试函数来测试所有提供的解决方案......它假设 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 相同
//在xes中寻找a
test('xxx');
测试('axx');
测试('xax');
测试('xxa');
测试('axa');
测试('xaa');
测试('aax');
测试('aaa');