2016-04-12 2 views
-3

は、(a.)一致する式のグループ式部分を取得する方法は?

は(これは今、削除された記事の再投稿です、私はこのケースでは、valueにマッチしたexpressionの一部を取得できるようにしたいと思い、var value = "axx"一致させるために、VAR expression = /(a.)|(b.)|(c.)/;を考えます私が得ようとしているのは正規表現の部分であり、一致する文字列の部分ではありません)。

+0

なぜ、3つの異なる表現にマッチさせようとしないのですか? –

+0

何もする必要はありません。どのキャプチャグループが満たされているかを確認するだけです。 –

+0

@AdrienBrunelatもっと長い式を使用したいので、できるだけ多くのループを避けたいです。 –

答えて

1
function getFirstMatchedGroupIndex(regex, test_str) { 
    var result = test_str.match(regex); 
    if (result) { 
     return result.splice(1).findIndex(x => x); 
    } 
} 

var reg = /(a.)|(b.)|(c.)/; 

getFirstMatchedGroupIndex(reg, "axx"); // 0 
getFirstMatchedGroupIndex(reg, "bxx"); // 1 
getFirstMatchedGroupIndex(reg, "cxx"); // 2 
getFirstMatchedGroupIndex(reg, "xxx"); // undefined 

この関数は、事実を利用すること一致次のエントリを含む配列を返しmatchストリング方式の場合:

  • 最初の指標としては:テスト文字列の部分、どの正規表現にマッチしました。
  • 次のインデックスには、グループが一致しなかった場合にundefinedが代わりに保存され、取得されたグループの内容が含まれています(左から2桁目が数えられます)。
+0

申し訳ありませんが、そのコードはどこで実行していますか?あなたが 'x => x'で何を意味するのかわからない、おい、それはjavascriptでもある –

+1

はい、それはJavaScriptです、私は新しいES6の矢印関数を使用しています、問題の断片はもっとexplicityを書くことができましたfindIndex(function(item) { 返却物 });古いブラウザを使用している場合や下位互換性が必要な場合は、このコードを使用してください。 –

+0

ああ、これはちょうどそのパラメータを返す関数を持つために奇妙に見えるかもしれません。アイデンティティ関数と呼ばれています。 findIndexは、指定された関数(ここではID)に渡されたときに真理値を返す最初の項目のインデックスを返します。 –

関連する問題