在javascript中,是否有一个等效的String.indexOf()为第一个第一个参数采用正则表达式而不是字符串,同时仍然允许第二个参数?
我需要做点什么
str.indexOf(/[abc]/ , i);
Run Code Online (Sandbox Code Playgroud)
和
str.lastIndexOf(/[abc]/ , i);
Run Code Online (Sandbox Code Playgroud)
虽然String.search()将regexp作为参数,但它不允许我指定第二个参数!
编辑:
事实证明这比我原先想象的要难,所以我编写了一个小测试函数来测试所有提供的解决方案......它假设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)]) ;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在测试如下以确保至少对于一个字符regexp,结果与我们使用indexOf时相同
//在xes
test('xxx')中查找a ;
试验( 'AXX');
试验( 'XAX');
试验( 'XXA');
试验( 'AXA');
试验( '的Xaa');
试验( 'AAX');
试验( 'AAA');