0

次のコード

var input = "http://local.app.com/frontend/v12/#/M1WPD/!/abcde/!/fghij/";

var regex = new RegExp("(?:.+?#/([a-zA-Z0-9]{5})/(?:!/([a-zA-Z0-9]{5})/)*)");

var result = input.match(regex);

console.log(result);

// ["http://local.app.com/frontend/v12/#/M1WPD/!/abcde/!/fghij/", "M1WPD", "fghij"]

これを印刷する必要があります...

["http://local.app.com/frontend/v12/#/M1WPD/!/abcde/!/fghij/", "M1WPD", "abcde", "fghij"]

それ以外...

["http://local.app.com/frontend/v12/#/M1WPD/!/abcde/!/fghij/", "M1WPD", "fghij"]

私は何を間違っていますか?

4

2 に答える 2

1

量指定子を使用してグループの数を取得することはできませんn。その結果、その特定のグループで最後に発生した一致が取得されます。

グループを手動で選択する必要があります...

そのはず:

(?:.+?#/([a-zA-Z0-9]{5})/!/([a-zA-Z0-9]{5})/!/([a-zA-Z0-9]{5})

任意の数の一致がある場合はsplit、以下の正規表現を使用できます

/[#!]/|/$

上記の正規表現は、「~が続く」または「~が続く」が出現する文字列を分割することを意味します/#!/

また

/続いて文字列の終わり$

于 2012-11-26T17:28:42.820 に答える
-1
 Regex pattern = new Regex("[^0-9a-zA-Z]*\\w{5,}");

上記のコードのように変更して試してください

于 2012-11-26T17:35:05.770 に答える