下面的代码有点有用,除了yes.com
显示为valid
,而我只需要接受此格式ns1.yes.com
,www.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>
答案 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连续多次接受破折号,但通常是“禁止”。