域名服务器验证

域名服务器验证

问题描述:

下面的代码有点儿工作除了yes.com被示为valid而我需要只接受这种格式ns1.yes.comwww.yes.com,接受号码和在前面或在域名服务器的最后没有破折号或点。请帮帮我。域名服务器验证

<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/

通过分割点的值,并计算所产生的部分。

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

你没有对主机的部分进行任何验证。例如,这将匹配“@。@。@”如果多于3,它也会匹配。 – Asmor 2012-02-09 20:06:04

+0

他已经有了验证。我不确定他是否想要3或至少3。 – 2012-02-09 20:07:51

+0

是的非常感谢。你正确理解我。其作品。再次感谢。 – sg552 2012-02-10 11:58:03

您需要对需要匹配的模式更清楚一点。我假设你想要3个由两个点分开的字母数字“单词”。

此正则表达式将匹配你想要什么:

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 2012-02-10 11:59:25

从你的问题看来你忘了可能性双(或更多)破折号。 现在我知道有ccTLD在连续接受多个破折号,但通常这是“禁止的”。