找回密码
 加入
搜索
查看: 4121|回复: 9

[AU3基础] 如何判断一个字符串是否为ip地址?(已接决)

  [复制链接]
发表于 2010-11-19 22:23:50 | 显示全部楼层 |阅读模式
本帖最后由 aux649350702 于 2010-11-20 14:21 编辑

如何判断一个字符串是否为ip地址?
发表于 2010-11-19 23:44:38 | 显示全部楼层
当然正则,可以论坛搜一下
发表于 2010-11-20 07:59:26 | 显示全部楼层
本帖最后由 xlcwxl 于 2010-11-20 08:02 编辑

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 178, 99, 192, 124)
$Input1 = GUICtrlCreateInput("", 32, 32, 121, 21)
$Button1 = GUICtrlCreateButton("Button1", 80, 56, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        If _isIP(GUICtrlRead($Input1)) Then
                                MsgBox(0, "", "是合法IP地址")
                        Else
                                MsgBox(0, "", "不是合法IP地址")
                        EndIf

        EndSwitch
WEnd

Func _isIP($ip)
        Return 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])$")
EndFunc   ;==>_isIP
发表于 2010-11-20 08:28:08 | 显示全部楼层
^([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){2}([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$
发表于 2010-11-20 09:01:52 | 显示全部楼层
$ip='192.168.1.100'
if stringregexp($ip,'^([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){2}([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$') then msgbox(0,'ip','true')
发表于 2010-11-20 10:11:50 | 显示全部楼层
本帖最后由 binghc 于 2010-11-20 10:30 编辑

楼上的表达式都好长啊,可以想想怎么简化一下
 楼主| 发表于 2010-11-20 14:19:52 | 显示全部楼层
呵呵,小弟不会正则,谢谢各位指教!!!
发表于 2010-11-20 15:22:42 | 显示全部楼层
如果只是单单判断一个字符串是不是ip地址而不是从目标字符串中分析出ip地址,大可以不用正则

用字符串截取就行了,或者用StringSplit()分割再判断,也很方便
发表于 2010-11-20 16:09:40 | 显示全部楼层
拜托注意一下 标题的错别字
发表于 2010-11-21 00:02:11 | 显示全部楼层
#include<array.au3>
$a=StringSplit($string, '.', 2)
_ArraySort($a)
If UBound($a) = 4 Then 
        If $a[0]<1 Or $a[3]>255 Then
                MsgBox('','','error')
        Else 
                MsgBox('','','right')
        EndIf
Else
        MsgBox('','','error')
EndIf
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-11 09:42 , Processed in 0.077278 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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