Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以为Javascript传递多个参数(模式)吗';s replace()?如果没有,有什么好的选择吗?_Javascript - Fatal编程技术网

我可以为Javascript传递多个参数(模式)吗';s replace()?如果没有,有什么好的选择吗?

我可以为Javascript传递多个参数(模式)吗';s replace()?如果没有,有什么好的选择吗?,javascript,Javascript,我使用以下ex URL并删除所有内容,但环境(如dev)除外。下面的代码工作正常 var env = endPoint.replace("https://support.", "\n"); var envClean = env.replace(".mysite.com/batch/", "\n"); 我不喜欢重复我自己。我希望在字符串中查找这两种模式,并立即将它们全部删除。MDN在这里很好地分解了replace(),但它没有提到任何关于多个参数的内容 我试过这个: var env = endP

我使用以下ex URL并删除所有内容,但环境(如dev)除外。下面的代码工作正常

var env = endPoint.replace("https://support.", "\n");
var envClean = env.replace(".mysite.com/batch/", "\n");
我不喜欢重复我自己。我希望在字符串中查找这两种模式,并立即将它们全部删除。MDN在这里很好地分解了replace(),但它没有提到任何关于多个参数的内容

我试过这个:

var env = endPoint.replace("https://support." && ".mysite.com/batch/", "\n"); 
但它只解析第二个参数,而忽略第一个参数

有人有更干净的方法吗?我假设我可以通过正则表达式搜索多种模式,有正则表达式大师愿意帮忙吗


干杯。

您可以链接您的方法:

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];

您可以链接您的方法:

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];

您可以为此使用正则表达式:

var environment  = 'https://support.dev.mysite.com/batch/'
    .replace(/^https:\/\/support\.|\.mysite\.com\/batch\/$/g, '');

您可以为此使用正则表达式:

var environment  = 'https://support.dev.mysite.com/batch/'
    .replace(/^https:\/\/support\.|\.mysite\.com\/batch\/$/g, '');

对于这个特定的URL模式,为什么不让它变得非常简单并使用
.split()

如果我使用正则表达式,我可能会这样做:

var match = url.match( /support\.(.*)\.mysite.com/ );
var name = match && match[1];
注意,您不必这样担心整个URL,只需进行匹配即可

如果您知道URL将匹配,可以将其简化为:

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

对于这个特定的URL模式,为什么不让它变得非常简单并使用
.split()

如果我使用正则表达式,我可能会这样做:

var match = url.match( /support\.(.*)\.mysite.com/ );
var name = match && match[1];
注意,您不必这样担心整个URL,只需进行匹配即可

如果您知道URL将匹配,可以将其简化为:

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

谢谢你的意见!对于replace w/regex选项,它需要全局标志来接受多个模式。感谢您的输入!对于replace w/regex选项,它需要全局标志来接受多个模式。qwertymk是第一个给我一个可靠、简单的答案的人,所以我把它标对了。应该注意的是,您的url.match解决方案是迄今为止最短的,效果非常好。谢谢回答得很好。qwertymk是第一个给我一个可靠、简单的答案的人,所以我把它标对了。应该注意的是,您的url.match解决方案是迄今为止最短的,效果非常好。谢谢