yEn 发表于 2010-5-14 14:37:15

检测输入的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)
       $reIP =StringRegExp($IP,"^(25|2|{1}{2}|{1}{1}|)\.(25|2|{1}{2}|{1}{1}||0)\.(25|2|{1}{2}|{1}{1}||0)\.(25|2|{1}{2}|{1}{1}|)$",0)
       Return $reIP
EndFunc

冰窖的蚂蚁 发表于 2010-5-14 17:25:45

非常感谢。学习了。

YoDe 发表于 2010-5-15 11:52:20

学习收藏了。。

qj395202409 发表于 2010-5-15 13:34:36

正则表达式啊。。。。好长的说

虫子樱桃 发表于 2010-5-25 14:53:08

回复 1# yEn


    灰常感谢!

xlcwxl 发表于 2010-8-19 19:34:20

此贴如此强,不得不顶啊

afan 发表于 2010-8-19 20:05:33

((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)

xlcwxl 发表于 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\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)",0)
         Return $reIP
EndFuncafan的正则更厉害

afan 发表于 2010-8-19 21:49:19

回复 8# xlcwxl


    那个是现成的… 我复制过来滴 http://deerchao.net/tutorials/regex/regex.htm

asionwu 发表于 2010-8-20 09:35:02

回复 7# afan

zcx880517 发表于 2010-8-20 09:54:49

回复 7# afan


    正则有问题,,超255后还是显示有效。。

3mile 发表于 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>255 Or $IP_array>255 Or $IP_array>255 Or $IP_array>255 Then
                       $reIP=0
                Else
                       $reIP=1
                EndIf
      Return $reIP
EndFunc

xlcwxl 发表于 2010-8-22 07:33:15

本帖最后由 xlcwxl 于 2010-8-22 07:55 编辑

回复 12# 3mile

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

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 > 255 Or $IP_array > 255 Or $IP_array > 255 Or $IP_array > 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 = 4 Then
      For $i = 1 To $IP_array
         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
页: [1] 2
查看完整版本: 检测输入的IP是否合法