找回密码
 加入
搜索
查看: 10513|回复: 22

[原创] 检测输入的IP是否合法

 火... [复制链接]
发表于 2010-5-14 14:37:15 | 显示全部楼层 |阅读模式
Dim $reIP
$inputIP = InputBox("请输入IP", "请输入有效的IP地址", "")
CheckIP($inputIP)
If $reIP =1 Then
        MsgBox(0,"结果", $inputIP & "是一个有效的IP地址!")
Else
        MsgBox(0,"结果", $inputIP & "不是一个有效的IP地址!")
EndIf
Func CheckIP($IP)
         $reIP =StringRegExp($IP,"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$",0)
         Return $reIP
EndFunc
发表于 2010-5-14 17:25:45 | 显示全部楼层
非常感谢。学习了。
发表于 2010-5-15 11:52:20 | 显示全部楼层
学习收藏了。。
发表于 2010-5-15 13:34:36 | 显示全部楼层
正则表达式啊。。。。好长的说
发表于 2010-5-25 14:53:08 | 显示全部楼层
回复 1# yEn


    灰常感谢!
发表于 2010-8-19 19:34:20 | 显示全部楼层
此贴如此强,不得不顶啊
发表于 2010-8-19 20:05:33 | 显示全部楼层
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
发表于 2010-8-19 21:47:59 | 显示全部楼层
本帖最后由 xlcwxl 于 2010-8-19 21:50 编辑

回复 7# afan
Dim $reIP
$inputIP = InputBox("请输入IP", "请输入有效的IP地址", "")
CheckIP($inputIP)
If $reIP =1 Then
        MsgBox(0,"结果", $inputIP & "是一个有效的IP地址!")
Else
        MsgBox(0,"结果", $inputIP & "不是一个有效的IP地址!")
EndIf
Func CheckIP($IP)
         $reIP =StringRegExp($IP,"((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)",0)
         Return $reIP
EndFunc
afan的正则更厉害
发表于 2010-8-19 21:49:19 | 显示全部楼层
回复 8# xlcwxl


    那个是现成的… 我复制过来滴 http://deerchao.net/tutorials/regex/regex.htm
发表于 2010-8-20 09:35:02 | 显示全部楼层
回复 7# afan

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-8-20 09:54:49 | 显示全部楼层
回复 7# afan


    正则有问题,,超255后还是显示有效。。
发表于 2010-8-21 22:42:04 | 显示全部楼层
正则处理IP并不明智,数学方法应该少写些代码
Dim $reIP
$inputIP = InputBox("请输入IP", "请输入有效的IP地址", "")
CheckIP($inputIP)
If $reIP =1 Then
        MsgBox(0,"结果", $inputIP & "是一个有效的IP地址!")
Else
        MsgBox(0,"结果", $inputIP & "不是一个有效的IP地址!")
EndIf
Func CheckIP($IP)
        $IP_array=StringSplit($IP,".")
                If $IP_array[1]>255 Or $IP_array[2]>255 Or $IP_array[3]>255 Or $IP_array[4]>255 Then
                         $reIP=0
                Else
                         $reIP=1
                EndIf
        Return $reIP
EndFunc
发表于 2010-8-22 07:33:15 | 显示全部楼层
本帖最后由 xlcwxl 于 2010-8-22 07:55 编辑

回复 12# 3mile

我输入中文和字母,提示如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-8-22 09:19:30 | 显示全部楼层
回复 13# xlcwxl
对于中文和字母的问题。稍作修改即可。
Dim $reIP
$inputIP = InputBox("请输入IP", "请输入有效的IP地址", "")
CheckIP($inputIP)
If $reIP = 1 Then
        MsgBox(0, "结果", $inputIP & "是一个有效的IP地址!")
Else
        MsgBox(0, "结果", $inputIP & "不是一个有效的IP地址!")
EndIf
Func CheckIP($IP)
        $IP_array = StringSplit($IP, ".")
        For $i = 1 To 4
                If Not IsNumber($IP_array[$i]) Then
                        $reIP = 0
                        Return $reIP
                EndIf
        Next

        If $IP_array[1] > 255 Or $IP_array[2] > 255 Or $IP_array[3] > 255 Or $IP_array[4] > 255 Then
                $reIP = 0
        Else
                $reIP = 1
        EndIf
        Return $reIP
EndFunc   ;==>CheckIP
发表于 2010-8-22 09:24:24 | 显示全部楼层
本帖最后由 飞龙三少 于 2010-8-22 09:32 编辑

回复 14# 3mile

在你基础上稍作修改,增加对输入的IP字符串 分割后得到的数组维度的判断,检测输入的IP是否完整如127.0.0.1共4部分。
Dim $reIP
$inputIP = InputBox("请输入IP", "请输入有效的IP地址", "")

CheckIP($inputIP)

If $reIP =1 Then
    MsgBox(0,"结果", $inputIP & "是一个有效的IP地址!")
Else
    MsgBox(0,"结果", $inputIP & "不是一个有效的IP地址!")
EndIf
        
Func CheckIP($IP)        
    $IP_array=StringSplit($IP, ".",1)
    If Not @error And $IP_array[0] = 4 Then
        For $i = 1 To $IP_array[0]
           If StringIsInt($IP_array[$i]) = 0 Or $IP_array[$i] < 0 Or $IP_array[$i] > 255 Then
               $reIP=0
               ExitLoop
           Else
               $reIP=1
           EndIf
       Next
    Else
       $reIP=0
    EndIf                
    Return $reIP
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-21 21:57 , Processed in 0.080225 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表