2012-02-09 7 views
0
以下のコードはちょっと動作

validとして示されています。お願い助けて。ネームサーバー検証

<html> 
<head> 
<title>Validate name server</title> 
<script type="text/javascript"> 

    function validSubdomain() { 
     var re = /^[a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9]$/; 
     var val = document.getElementById("nameserver").value; 

    if(val == ''){ 
     alert("Please enter the name server"); 
     return false; 
    } 
     if(re.test(val)) { 
      alert("valid format"); 
     } 

     if(!re.test(val)) { 
      alert("invalid format"); 
     } 

    } 
    </script>   
    </head> 

    <body> 
    Insert nameserver : <input name="txt_domain" id="nameserver" type="text" size="30" /> <input name="btn_validate" type="button" value="Validate" onclick="validSubdomain()" /> 
    </body> 
    </html> 

デモページ:http://khamis.cheapantivirus.me/

答えて

1

ドットで値を分割し、得られ部品を数えます。

var parts = val.split('.'); 
if (parts.length < 3) { alert('invalid') } 
+0

あなたはホストの部分について検証を行っていません。たとえば、それは "@。@。@"と一致します.3より大きい場合は一致します。 – Asmor

+0

彼はすでにバリデーションを行っています。私は彼が正確に3または少なくとも3を望んでいたかどうかはわかりませんでした。 –

+0

はい、ありがとうございます。あなたは私を正しく理解する。それは作品です。再度、感謝します。 – sg552

0

一致する必要があるパターンについてもう少し明確にする必要があります。私は、3つの英数字の「単語」を2つのドットで区切って欲しいと仮定しています。

この正規表現は、あなたが望むものと一致します:

var re = /[a-zA-Z0-9]+(\.[a-zA-Z0-9]+){2}/ 

あなたがホストで少なくとも 3部に一致するように望んでいた場合には、例えば「foo.bar.example.com」または「www.example.co.ukは」、ちょうどオープンエンドであることを最後に数量詞を変更します。

var re = /[a-zA-Z0-9]+(\.[a-zA-Z0-9]+){2,}/ 
+0

私の質問をはっきりさせないために謝罪します。あなたの時間を無駄にして申し訳ありません。私はあなたの助けに感謝します。 – sg552

0

あなたの質問から、それはあなたが可能性を忘れているようです二重(またはそれ以上)のダッシュの 現在、ccTLDは複数のダッシュを連続して受け付けていますが、通常は禁止されています。