我試圖想出一個Javascript正則表達式的命令,將這些輸入轉換成以下輸出的一部分:的Javascript正則表達式替換有條件地去除串
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';
}
}
你能解釋一下這裏應該適用的一般規則嗎?根據您的示例輸入/輸出,人們可能會認爲您正在尋找一種方法來刪除連字符,句點和單詞foo,當它們出現在第一個句點之前時。那是你要的嗎? – jahroy 2013-02-26 02:07:04
你能解釋一下你想讓你的正則表達式工作嗎?所以它需要一個形式爲'mydomain.com'或'(something).mydomain.com'的字符串,並且應該總是返回'mydomain.com',*除非*'(something)'包含單詞'dev',否則哪種情況應該是'dev.mydomain.com'?或者你只是想刪除任何'foo'的發生? – 2013-02-26 02:07:22
@jahroy我已經更新了使用規則的問題。也許你可以撤銷downvote? – Tauren 2013-02-26 02:25:42