我有一个名为domain的输入字段。用户输入此字段,我得到了值,在大多数情况下,我会自动将“.com”附加到最后。
“示例”中的用户类型和其他地方显示的输出是“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 :(得分: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
}
}