我正在尝试提出一个 Javascript RegEx 命令,它将这些输入转换为以下输出:
INPUT DESIRED OUTPUT
mydomain.com --> mydomain.com
foo.mydomain.com --> mydomain.com
dev.mydomain.com --> dev.mydomain.com
dev-foo.mydomain.com --> dev.mydomain.com
这是规则:
- 从域中删除子域,除非子域以字符“dev”开头
- 如果子域以“dev”开头,则输出“dev.domain.com”
- 保留在域末尾指定的任何端口
我的正则表达式技能让我失望。这是我到目前为止所拥有的:
'mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// .mydomain.com
'foo.mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// foo.mydomain.com
'dev-foo.mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// dev.mydomain.com
'dev.mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// dev.mydomain.com
前两个失败,后两个工作。有什么建议么?
这是有效的javascript,但我希望将它组合成一个正则表达式替换命令。请注意,我还想保留在 dmain 末尾指定的任何端口。
var getHost = function () {
var host = window.location.host;
if (host.substring(0,3) === 'dev') {
return host.replace(/^(dev)?(-.*)?(mydomain\.com.*)/,'$1.$3');
}
else {
return 'mydomain.com';
}
}