1

Google App Scriptのスタンドアロンスクリプトから、その構成要素へのURLの処理に取り組んでいます。

私の問題は、ネット上の正規表現構築ツールが私の正規表現が正しいことを教えてくれることですが、私は1つの値しか得られません。

具体的には、私のコードは次のとおりです。

function UrlComponents(url) {
  const _urlMatchPattern = /^((http[s]?):\/)?\/?([^:\/\s]+)(:([^\/]*))?((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(\?([^#]*))?(#(.*))?$/mig;   // Source: http://stackoverflow.com/questions/27745/getting-parts-of-a-url-regex

  if (!_urlMatchPattern.test(url))
    return new Array();

  var urlMatches = url.match(_urlMatchPattern);

  if (urlMatches != null)
  {
    Logger.log("Count:" + Math.floor(urlMatches.length));

    for (var i=0; i<Math.floor(urlMatches.length);i++)
      Logger.log("Position " + i + ": " + urlMatches[i]);
  }

  return urlMatches;
}

コードを実行してこれをテストすると、出力は塗りつぶし文字列を含む単一の配列要素になります。ただし、正規表現テストツール(http://gskinner.com/RegExr/またはwww.regexplanet.com/advanced/java/など)を使用した同じことで、正しい情報が得られます。

私の避けられない愚かな誤りを指摘するどんな助け/アドバイス/礼儀正しいこともありがたいです。

おかげで、ジョニー

4

1 に答える 1

1

この問題を修正するには/g、正規表現から修飾子を削除する必要があります。つまり、行は次のようになります。

const _urlMatchPattern = /^((http[s]?):\/)?\/?([^:\/\s]+)(:([^\/]*))?((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(\?([^#]*))?(#(.*))?$/mi;
于 2012-08-09T06:59:33.650 に答える