1

このキャプチャを希望どおりに動作させることができません:

私の目的は、最初のキャプチャ グループの長さを文字列でキャプチャすることです。

var regex = /(_)?;([\w]+);([\w]+);/;
var string = "____;foo;bar;";
var matches = regex.exec(string);

console.log(matches); // outputs  ["_;foo;bar;", "_", "foo", "bar"]

ご覧matches[1]のとおり、アンデススコアのキャプチャ グループが含まれていますが、すべてのアンダースコアではなく、一致した文字が表示されます。私が期待するのは、この結果です:

["_;foo;bar;", "_____", "foo", "bar"]

正規表現でこれを達成する方法はありますか? ;文字列を...で分割することは避けたいと思います

4

1 に答える 1

1

次のようなパターンを使用できます。

/(_*);(\w+);(\w+);/

これはあなたに与えるでしょう:

["_____;foo;bar;", "_____", "foo", "bar"]

このパターンは、次のシーケンスに一致します。

  • グループ 1 でキャプチャされた 0 個以上のアンダースコア
  • セミコロン
  • グループ 2 でキャプチャされた 1 つまたは複数の単語文字
  • セミコロン
  • グループ 3 でキャプチャされた 1 つまたは複数の単語文字
  • セミコロン
于 2013-10-07T09:43:44.930 に答える