JavaScript では、2 番目のパラメータを許可しながら最初の最初のパラメータに文字列の代わりに正規表現を取る String.indexOf() に相当するものはありますか?
私は何かをする必要があります
str.indexOf(/[abc]/ , i);
と
str.lastIndexOf(/[abc]/ , i);
String.search() はパラメーターとして正規表現を受け取りますが、2 番目の引数を指定することはできません!
編集:
これは当初考えていたよりも難しいことが判明したため、提供されたすべてのソリューションをテストする小さなテスト関数を作成しました... 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)]) ;
}
}
そして、少なくとも1文字の正規表現について、結果がindexOfを使用した場合と同じであることを確認するために、次のようにテストしています
//xesの中からaを探す
test('xxx');
テスト ('axx');
テスト ('xax');
テスト ('xxa');
テスト('アクサ');
テスト ('xaa');
テスト ('aax');
テスト ('aaa');