有没有JavaScript的String.indexOf()版本允许正则表达式?
2022-08-30 00:26:12
在javascript中,是否存在与String.indexOf()等效的同义词,它采用正则表达式而不是字符串作为第一个参数,同时仍然允许第二个参数?
我需要做类似的事情
str.indexOf(/[abc]/ , i);
和
str.lastIndexOf(/[abc]/ , i);
虽然 String.search() 将正则表达式作为参数,但它不允许我指定第二个参数!
编辑:
事实证明,这比我原先想象的要难,所以我写了一个小的测试函数来测试所有提供的解决方案......它假定正则表达式IndexOf 和正则表达式LastIndexOf 已添加到 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
测试('xxx') 中查找 a;
test('axx');
test('xax');
test('xxa');
test('axa');
test('xaa');
test('aax');
test('aaa');