Javascript 名称服务器验证

Javascript 名称服务器验证,javascript,html,regex,validation,Javascript,Html,Regex,Validation,除了yes.com显示为valid之外,下面的代码可以正常工作,而我只需要接受这种格式ns1.yes.com,www.yes.com,接受数字,并且在nameserver的前面或结尾不接受破折号或点。请帮帮我 <html> <head> <title>Validate name server</title> <script type="text/javascript"> function validSubdomain()

除了
yes.com
显示为
valid
之外,下面的代码可以正常工作,而我只需要接受这种格式
ns1.yes.com
www.yes.com
,接受数字,并且在nameserver的前面或结尾不接受破折号或点。请帮帮我

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

验证名称服务器
函数validSubdomain(){
变量re=/^[a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9]$/;
var val=document.getElementById(“名称服务器”).value;
如果(val=''){
警报(“请输入服务器名称”);
返回false;
} 
如果(重新测试(val)){
警报(“有效格式”);
}
如果(!重新测试(val)){
警报(“无效格式”);
}
}
插入名称服务器:

演示页面:

将值按点分割,并计算结果部分

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

您需要更明确地说明需要匹配的模式。我假设你想要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,}/

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

您没有对主机的部件进行任何验证。例如,这将匹配“@@@@”如果有3个以上,它也将匹配。他已经有了验证。我不确定他到底想要3个还是至少3个。是的,非常感谢。你理解得对。这很有效。再次感谢。我很抱歉没有把我的问题说清楚。对不起,浪费了你的时间。我感谢你的帮助。