2017-07-16 9 views
0

私はドメインと呼ばれる入力フィールドを持っています。ユーザーはこのフィールドに値を入力し、ほとんどの場合、自動的に ".com"を最後に付けます。特定の部分文字列で終わる文字列を自動補完します

ユーザータイプは「example」で、出力は「example.com」です。

"example"を防ぐスクリプトセクションがあります。 "example..com"になることはありません。私は何をしようとしていることは、文字列は「.COM」のいずれかの部分で終わる場合、文字列は、「NET」のいずれかの部分で終了した場合は、「NET」を追加し、「.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'; 

文字列が ".org"のいずれかの部分で終了する場合は、 "。org"を付加します。

ユーザーが「example.c」を入力すると、「example.c.com」ではなく「example.com」になります。

ユーザーが「example.net」を入力すると、「example.net」のままになります。

ユーザーが「example.nett」を入力すると、「example.nett.com」になります。

私は9つの異なる順列(c、co、com、n、ne、ネット、o、or 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

文字列をドットで区切ります。

次に、2番目のインデックスに値がある場合、それを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 
    } 
} 
関連する問題