名称服务器验证

时间:2012-02-09 19:52:31

标签: javascript html regex validation

下面的代码有点有用,除了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/

3 个答案:

答案 0 :(得分:1)

按点分割值并计算结果部分。

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

答案 1 :(得分:0)

您需要对需要匹配的模式更加明确。我假设你想要用两个点分隔的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,}/

答案 2 :(得分:0)

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