0

我正在使用以下前 URL https://support.dev.mysite.com/batch/并删除所有内容,但环境(例如开发)。下面的代码工作正常。

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"); 

但它只是解析第二个 arg 而忽略第一个。

有没有人有更清洁的方法来做到这一点?我假设我可以通过 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

您可以链接您的方法:

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 回答
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 回答