2017-07-16 44 views
0

我有一個名爲域的輸入字段。用戶輸入這個字段,我得到的值,在大多數情況下,我自動附加「.com」到最後。自動完成一個字符串,如果它以特定子字符串結尾

「example」中的用戶類型和其他地方顯示的輸出是「example.com」。

我有一段腳本阻止「示例」。從成爲「example.com」。

// Convert to lower case, remove all non-valid characters, remove duplicate hyphens and periods, remove hyphens and periods from ends 
var domain = document.getElementById('domain').value.toLowerCase().replace(/[^a-z0-9-\.]/g, '').replace(/(-+(?=-))|(\.+(?=\.))/g,'').replace(/(^-+)|(-+$)|(^\.+)|(\.+$)/g, ''); 
// Add the TLD that best matches if it needs one 
if(!/\.(com|net|org)$/.test(domain) && domain != '') domain += '.com'; 

我試圖做的是追加「.COM」如果字符串中的「.COM」的任何部分結束後,追加「.NET」如果在字符串中的任何部分結束「.NET」 ,如果字符串在「.org」的任何部分結束,則追加「.org」。

如果用戶輸入「example.c」,它應該變成「example.com」而不是「example.c.com」。

如果用戶輸入「example.net」,它應該保持爲「example.net」。

如果用戶輸入「example.nett」,它應該變成「example.nett.com」。我可以測試九種不同的排列(c,co,com,n,ne,net,o或org),但我試圖找出更好的方法來做到這一點,特別是如果我想要支持更多的TLD。

+0

爲什麼邏輯如此:「如果用戶輸入」example.nett「,它應該變成」example.nett.com「。」?爲什麼不把「example.nett」替換爲「example.net」或「example.nett.net」? – guest271314

+0

我不想說明輸入錯誤。如果某人輸入.com,.net或.org的開頭以外的內容,我會假定第一部分是一個子域,並且我想在該域上應用相同的.com邏輯。如果有人輸入了nett,我會將它完成到nett.com。 – GFL

回答

1

我會從點開始分割字符串。

那麼如果在第二個索引中有一個值,那麼你可以把它扔到switch語句中。

它看起來像這樣。

function append(domain){ 
    var parts = domain.split("."); 

    if(parts.length == 1) // means there is no dot in the string 
     return domain + ".com"; 

    switch(parts[1]){ 
     // your cases 
    } 
} 
相關問題