我正在尝试使用核心javascript验证IP地址。我想确保每个IP地址段值必须大于100。但它不能正常工作。有关更多详细信息,请参阅以下代码。
function testIP(){
var ip=document.getElementById("ipaddress").value;
var first= ip.substring(0,3);
var second= ip.substring(4,7);
var third= ip.substring(8,11);
var fourth= ip.substring(12,15);
var error=false;
if(first){
var ippart1 = 0+first;
if(first<100){
}
else{
alert("Please enter a valid ip address.First part of ip address is incorrect");
error=true;
}
}
else
error=true;
if(second){
var ippart2 = 0+second;
if(ippart2<100){
}
else{
alert("Please enter a valid ip address.Second part of ip address is incorrect");
error=true;
}
}
else
error=true;
if(third){
var ippart3 = 0+third;
if(ippart3<100){
}
else{
alert("Please enter a valid ip address.Third part of ip address is incorrect");
error=true;
}
}
else
error=true;
if(fourth){
var ippart4 = 0+fourth;
if(ippart4<100){
}
else{
alert("Please enter a valid ip address.Forth part of ip address is incorrect");
error=true;
}
}
else
error=true;
if(error==true){
return false;
}
else
return true;
}
我认为问题在于字符串到整数的转换。我也试过parseInt
函数。它也不起作用。请看一下。
答案 0 :(得分:3)
您应该使用点split()
(http://www.w3schools.com/jsref/jsref_split.asp)值。然后你可以检查值。
为什么你的方式错了;
考虑我输入了85.15.13.25
变量值:
first: 85.
second: 15.
third: 13.
fourth: 25
所以第一,第二和第三个变量是错误的,它们包含一个点。
答案 1 :(得分:1)
首先,我建议使用此功能检查地址是否有效:
function validate( value ) { RegE = /^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$/ if(value.match(RegE)) alert('Valid IP'); else alert('Invalid IP'); }
然后使用parse int但条件良好(&gt; not&lt;):
if(parseInt(first)>100){
}
还要考虑重构代码:)