如果字符串以特定子字符串结尾,则自动填充字符串

时间:2017-07-16 01:35:48

标签: javascript regex

我有一个名为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。

1 个答案:

答案 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
    }
}