我有一個名爲域的輸入字段。用戶輸入這個字段,我得到的值,在大多數情況下,我自動附加「.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。
爲什麼邏輯如此:「如果用戶輸入」example.nett「,它應該變成」example.nett.com「。」?爲什麼不把「example.nett」替換爲「example.net」或「example.nett.net」? – guest271314
我不想說明輸入錯誤。如果某人輸入.com,.net或.org的開頭以外的內容,我會假定第一部分是一個子域,並且我想在該域上應用相同的.com邏輯。如果有人輸入了nett,我會將它完成到nett.com。 – GFL