在javascript中,是否有一个string . indexof()的等效,为第一个参数接受正则表达式而不是字符串,同时仍然允许第二个参数?
我需要做点什么
str.indexOf(/[abc]/ , i);
而且
str.lastIndexOf(/[abc]/ , i);
虽然String.search()接受regexp作为参数,但它不允许我指定第二个参数!
< p >编辑:< br > 这比我最初想象的要难,所以我写了一个小测试函数来测试所有提供的解决方案……它假设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)]) ;
}
}
我正在进行如下测试,以确保至少对于一个字符regexp,如果我们使用indexOf,结果是相同的
//在x中查找a
测试(“xxx”);< br >
测试(axx); < br >
测试(xax); < br >
测试(xxa); < br >
测试(axa); < br >
测试(xaa); < br >
测试(aax); < br >
测试(' aaa ');< / p >