Function CheckIP(ByVal str As String) As Boolean Dim i As Long Dim IP() As String IP = Split(str, ".") If UBound(IP) <> 3 Then CheckIP = False Exit Function End If For i = 0 To 3 If Not IsNumeric(IP(i)) Then CheckIP = False Exit Function End If If CLng(IP(i)) > 254 Then CheckIP = False Exit Function End If End If
End Function
简化一点的CheckIP函数:Option ExplicitFunction CheckIP(ByVal str As String) As Boolean Dim i As Long, S() As String S = Split(str, ".") CheckIP = False If UBound(S) = 3 Then For i = 0 To 3 If Not IsNumeric(S(i)) Or Trim(S(i)) <> S(i) Then Exit Function If CLng(S(i)) > 255 Or CLng(S(i)) < 0 Then Exit Function Next i CheckIP = True End If End FunctionPrivate Sub Form_Load() Debug.Print CheckIP("192.168.1.1") Debug.Print CheckIP("192.168.1.-1") Debug.Print CheckIP("192.168.1.256") Debug.Print CheckIP("10 .1 .1 .4") '这样的写法也算作不正确 End End Sub
[0-2][0-9][0-9].[0-2][0-9][0-9].[0-2][0-9][0-9].[0-2][0-9][0-9]忘记是不是 \.了,查一下就知道了,不过这样有点儿问题,还有一个办法就是用split(str,".")
然后判断每一位是不是小于255
Dim i As Long
Dim IP() As String
IP = Split(str, ".")
If UBound(IP) <> 3 Then
CheckIP = False
Exit Function
End If
For i = 0 To 3
If Not IsNumeric(IP(i)) Then
CheckIP = False
Exit Function
End If
If CLng(IP(i)) > 254 Then
CheckIP = False
Exit Function
End If
End If
End Function
Dim i As Long, S() As String
S = Split(str, ".")
CheckIP = False
If UBound(S) = 3 Then
For i = 0 To 3
If Not IsNumeric(S(i)) Or Trim(S(i)) <> S(i) Then Exit Function
If CLng(S(i)) > 255 Or CLng(S(i)) < 0 Then Exit Function
Next i
CheckIP = True
End If
End FunctionPrivate Sub Form_Load()
Debug.Print CheckIP("192.168.1.1")
Debug.Print CheckIP("192.168.1.-1")
Debug.Print CheckIP("192.168.1.256")
Debug.Print CheckIP("10 .1 .1 .4") '这样的写法也算作不正确
End
End Sub