1

私はこのような文字列を持っています:SPList:6E5F5E0D-0CA4-426C-A523-134BA33369D7?SPWeb:C5DD2ADA-E0C4-4971-961F-233789297FE9:

Javascriptを使用して、2つのID(異なる場合があります)を抽出したいと思います:6E5F5E0D-0CA4-426C-A523-134BA33369D7C5DD2ADA-E0C4-4971-961F-233789297FE9

私はこの正規表現を使用しています:^SPList\:(?:[0-9A-Za-z\-]+)\?SPWeb\:(?:[0-9A-Za-z\-]+)\:$

この式は、2つのIDを2つの一致するグループに抽出することを期待しています。

今では、私のコードは:

var input = "SPList:6E5F5E0D-0CA4-426C-A523-134BA33369D7?SPWeb:C5DD2ADA-E0C4-4971-961F-233789297FE9:";

var myregex = /^SPList\:(?:[0-9A-Za-z\-]+)\?SPWeb\:(?:[0-9A-Za-z\-]+)\:$/g;

var match = input.match(myregex);

var listId = match[0];
var webId = match[1];

ただし、これは期待どおりに機能していません。最初の一致には文字列全体が含まれ、2番目の一致は未定義です。

IDを抽出する適切な方法は何ですか?

これが私の問題を説明するjsfiddleです。

4

2 に答える 2

2

これはあなたのニーズに合うはずです:

var regex = /^SPList:([0-9A-F-]+)[?]SPWeb:([0-9A-F-]+):$/g;
var match = regex.exec(input);
var listId = match[1];
var webId = match[2];

最初の正規表現のキャプチャされていないグループをキャプチャするグループに置き換え、キャプチャされたデータを取得するregex.exec(input)代わりに使用しました。input.match(regex)また、IDは16進値のように見えるので、のA-F代わりに使用しましたA-Z

于 2013-02-20T10:30:55.903 に答える
1

これを試して:

        var myregex = /[^\:]([0-9A-Z\-]+)[^\?|\:]/g;
        var match = input.match(myregex);
        alert("listID: " + match[1] + "\n" + "webID: " + match[3]);
于 2013-02-20T10:55:29.647 に答える