当前位置:编程学习 > C#/ASP.NET >>

IP地址输入验证问题

  Private Function IPCheck(ByVal strIP As String) As Boolean

        Try
            Dim intC = Convert.ToInt32(strIP)
            Return True

        Catch ex As Exception
            Console.WriteLine(ex.Message)
            Return False
        End Try

    End Function 
        Dim bolc As Boolean
        Dim str() As Object = New Object() {}
        Dim a As Integer


        Dim i As Integer

        Dim ipnb As String
     Dim strIP As String
        ipnb = 0




        bolc = IPCheck(Me.TextBox1.Text)
        If bolc = True Then   


            strIP = TextBox1.Text
        Else

            ipnb = 1 '输入应该为数字
        End If

        If InStr(".", strIP) Then

            str(i) = Split(strIP, ".")

            a = UBound(str)
        Else
            ipnb = 5


        End If
        If 0 < a < 3 Then
            i = a
        Else
            ipnb = 2 '输入形式不对
        End If

        For i = 0 To 3 Step 1
            If 0 < str(i) < 255 Then
                ipnb = 4 '正确
            Else
                ipnb = 3 '输入数字应该在255和0之间
            End If

        Next
        

        Select Case ipnb
            Case 0
                MsgBox("请输入IP")
            Case 1
                MsgBox("输入应该为数字!")
            Case 2 Or 5
                MsgBox("输入形式不对!")
            Case 3
                MsgBox("输入数字应该在255和0之间!")
            Case 4
                MsgBox("输入正确!")

        End Select
    End Sub
运行时报"索引超出了数组界限"错误
请高手帮忙吧
急! --------------------编程问答--------------------
Imports System.Text.RegularExpressions

Namespace LzmTW.uSystem.uNet

    Friend Class Common
        Public Const IP4_PATTERN As String = "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"

        ''' <summary>
        ''' 是否是单个有效IP4地址
        ''' </summary>
        ''' <param name="ip" >十进制表示法地址字串</param>
        ''' <returns>地址类型</returns>
        Public Shared Function IsValidIP4_Single_GetFirstPart(ByVal ip As String) As IP4Type
            If String.IsNullOrEmpty(ip) Then Return IP4Type.Unknown

            Dim mPattern As String = String.Concat("^", IP4_PATTERN, "$")

            With Regex.Match(ip, mPattern)
                If .Success Then
                    Dim mFirstPart As String = .Groups(1).Value
                    Return GetIP4Type(mFirstPart)
                End If
            End With

            Return IP4Type.Unknown
        End Function

        ''' <summary>
        ''' IP4地址类型
        ''' </summary>
        ''' <param name="ipFirstPart">地址十进制表示法的首部</param>
        Public Shared Function GetIP4Type(ByVal ipFirstPart As String) As IP4Type
            If String.IsNullOrEmpty(ipFirstPart) Then Return IP4Type.Unknown

            Dim mFirstPartToInt As Integer
            If Not Integer.TryParse(ipFirstPart, mFirstPartToInt) Then Return IP4Type.Unknown

            Select Case mFirstPartToInt

                Case 1 To 126
                    Return IP4Type.A

                Case 128 To 191
                    Return IP4Type.B

                Case 192 To 223
                    Return IP4Type.C

                Case Else
                    Return IP4Type.Unknown

            End Select
        End Function

        ''' <summary>
        ''' 根据所给地址类型取默认掩码地址
        ''' </summary>
        ''' <returns >掩码地址,如地址无效则为Nothing</returns>
        Public Shared Function GetMask(ByVal iptype As IP4Type) As String

            Select Case iptype
                Case IP4Type.A
                    Return "255.0.0.0"

                Case IP4Type.B
                    Return "255.255.0.0"

                Case IP4Type.C
                    Return "255.255.255.0"

                Case IP4Type.Unknown
                    Return Nothing

            End Select

            Return Nothing
        End Function
    End Class

End Namespace
--------------------编程问答-------------------- For i = 0 To 3 Step 1 
            If 0  < str(i)  < 255 Then 
                ipnb = 4 '正确 
这里异常了? --------------------编程问答-------------------- 就是那里了,不知道 是怎么回事 --------------------编程问答-------------------- 我刚才用你的程序时,里面报了一个"IP4Type"未定义类型啊 --------------------编程问答--------------------
Namespace LzmTW.uSystem.uNet

    Public Enum IP4Type
        A
        B
        C
        Unknown
    End Enum

End Namespace
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,