これらの入力を次の出力に変換する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
最初の 2 つは失敗し、最後の 2 つは機能します。助言がありますか?
これが機能するjavascriptですが、それを単一の正規表現置換コマンドに結合したいと考えていました。ドメインの最後に指定されたポートも保持したいことに注意してください。
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';
}
}