如何判断一个字符串是否为ip地址?(已接决)
本帖最后由 aux649350702 于 2010-11-20 14:21 编辑如何判断一个字符串是否为ip地址? 当然正则,可以论坛搜一下 本帖最后由 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|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}|)$")
EndFunc ;==>_isIP ^(|\d|1\d\d|2\d|25)\.((|\d|1\d\d|2\d|25)\.){2}(|\d|1\d\d|2\d|25)$ $ip='192.168.1.100'
if stringregexp($ip,'^(|\d|1\d\d|2\d|25)\.((|\d|1\d\d|2\d|25)\.){2}(|\d|1\d\d|2\d|25)$') then msgbox(0,'ip','true') 本帖最后由 binghc 于 2010-11-20 10:30 编辑
楼上的表达式都好长啊,可以想想怎么简化一下 呵呵,小弟不会正则,谢谢各位指教!!! 如果只是单单判断一个字符串是不是ip地址而不是从目标字符串中分析出ip地址,大可以不用正则
用字符串截取就行了,或者用StringSplit()分割再判断,也很方便 拜托注意一下 标题的错别字 #include<array.au3>
$a=StringSplit($string, '.', 2)
_ArraySort($a)
If UBound($a) = 4 Then
If $a<1 Or $a>255 Then
MsgBox('','','error')
Else
MsgBox('','','right')
EndIf
Else
MsgBox('','','error')
EndIf
页:
[1]