0

次の元 URL https://support.dev.mysite.com/batch/を取得して、すべてを削除しますが、環境 (例: dev) は削除します。以下のコードは正常に動作します。

var env = endPoint.replace("https://support.", "\n");
var envClean = env.replace(".mysite.com/batch/", "\n");

私は自分自身を繰り返すのが好きではありません。文字列内の両方のパターンを探して、一度にすべて削除したいと思います。MDN には、ここで replace() の詳細な内訳があります - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replaceですが、複数の引数については何も言及されていません。

私はこれを試しました:

var env = endPoint.replace("https://support." && ".mysite.com/batch/", "\n"); 

ただし、2番目の引数を解析し、最初の引数を無視します。

誰かがこれを行うためのよりクリーンな方法を持っていますか? REGEX を介して複数のパターンを検索できると仮定していますが、REGEX マスターは助けてくれますか?

乾杯。

4

3 に答える 3

3

これには正規表現を使用できます。

var environment  = 'https://support.dev.mysite.com/batch/'
    .replace(/^https:\/\/support\.|\.mysite\.com\/batch\/$/g, '');
于 2013-04-17T00:02:21.457 に答える
1

この特定の URL パターンについては、非常にシンプルにして以下を使用して.split()ください。

var url = 'https://support.dev.mysite.com/batch/';

var name = url.split('.')[1];

正規表現を使用している場合、おそらく次のようにします。

var match = url.match( /support\.(.*)\.mysite.com/ );
var name = match && match[1];

このように URL 全体を気にする必要はなく、一致するのに十分なだけであることに注意してください。

URL が一致することがわかっている場合は、次のように簡略化できます。

var name = url.match( /support\.(.*)\.mysite.com/ )[1];
于 2013-04-17T00:11:10.893 に答える
1

メソッドをチェーンできます:

var envClean = endPoint.replace("https://support.", "\n").replace(".mysite.com/batch/", "\n");

または、正規表現を使用できます。

var envClean = endPoint.replace(/https:\/\/support\.|\.mysite\.com\/batch\//, "\n");

そして、取得する別の解決策がありますdev

var envClean = endPoint.match(/^https:\/\/support\.([^.]*)\.mysite\.com\/batch\/$/)[1];
于 2013-04-17T00:00:51.407 に答える